[英]ASP.Net MVC 5: Html.RenderAction(“…”) at runtime
我想通过按一个按钮多次添加PartialView。
<div id="FilterRows">
@{Html.RenderAction("_FilterRow");}
</div>
<button id="newRow" type="button"
class="btn btn-sm btn-default"
style="width: 50px">+</button>
这段代码可以正常工作。 但是现在我想在单击按钮时将div FilterRows附加另一个_FilterRow的PartialView。
就像是:
$(document).ready(function() {
$("#newRow").click(function() {
$("#Exec").append("<br>", @{Html.RenderAction("_FilterRow");} {
});
});
});
不幸的是无法正常工作。 有任何想法吗?
如果添加一个将部分渲染返回为部分的动作(即, return PartialView("myView", model);
则可以使用jQuery加载:
# Create a new element to contain...
var el = $('<div></div>');
$('#parent').append(el);
# ...the new content
el.load('@Url.Action("action", "controller"');
(这意味着在razor视图中运行JS以获得正确的URL生成。如果大多数JS在其自己的文件中,则仅将Razor文件中的小JS的URL传递给URL之类的东西。)
只要您的脚本在页面中(而不是在外部.js文件中),您就可以在js中使用Razor(尽管直接来自MicroSoft的反馈表明这是“意外的”,但效果很好)。
看看呈现的html,看看有什么问题。
在这种情况下,您需要在渲染操作周围加上引号(“):
$("#FilterRows").append("@{Html.RenderAction("_FilterRow");}");
这假定了许多潜在的问题:
'
上追加和"
内部渲染或另一方向的全能) @{}
/ @()
和render / tostring的正确组合 如果您只想呈现一些html并且不需要执行任何操作,则使用@Html.RenderPartial
可能会更好。
另一种可能更友好的机制是在页面上已经有空白行(也许是隐藏的)并使用.clone()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.