我在MVC 5中的View中有部分视图。这个局部视图在主视图的不同部分呈现Markdown编辑器。 以下是部分视图中的Markdown编辑器代码。
<div id="field comments">
</div>
var editor = new tui.Editor({
el: document.querySelector('#field comments')})
我在主视图中将此部分称为
@Html.Partial("_MarkdownEditor")
但问题是我希望通过将不同的参数传递给&#34; id&#34;来在不同的部分中使用此部分视图。 attribute.Some是这样的,
@Html.Partial("_MarkdownEditor", new { @id = "executive comments" })
因此,这将创建一个Markdown编辑器的新实例,其id =&#34;执行注释&#34;和querySelector(#executive comments)。
<div id="executive comments">
</div>
var editor = new tui.Editor({
el: document.querySelector('#executive comments')})
动态地我需要同时设置&#39; id&#39;属性以及querySelector属性,方法是在Partial视图中传递参数。我是MVC新手..!请指教..
答案 0 :(得分:0)
如果我不记得错,我相信你可以这样做:
viewmodel主页
public class mainviewmodel
{
public partialViewModel {get;set}
}
viewmodel partial
public class partialviewmodel
{
public id {get;set}
public classval {get;set;}
}
然后在主页面中调用partial并将其赋予partialviewmodel
像这样:@Html.RenderPartial("partialpage", Model.partialviewmodel);
然后在部分页面中,您可以从viewmodel中添加html属性。
答案 1 :(得分:0)
您可以将匿名对象作为模型传递给partial:
@Html.Partial("_MarkdownEditor", new { id = "executive-comments" })
或使用ViewBag/ViewData
:
@{
ViewBag.MarkDownEditorSectionId = "executive-comments"
}
@Html.Partial("_MarkdownEditor")
并在部分内部使用它。像这样:
<div id="@Model.id">
</div>
var editor = new tui.Editor({
el: document.querySelector('#@Model.id')})
答案 2 :(得分:0)
您需要根据参数动态渲染局部视图。在这种情况下,首先需要在控制器中编写一个动作方法来返回局部视图
public IActionResult MarkdownEditorView(string keyId)
{
return PartialView(MarkdownEditor, new { id= keyId });
}
然后在javascript / jquery函数中,您可以动态呈现
//div container
var container = $("#editSection");
$.get("/controllerName/MarkdownEditorView/",
{
keyId: "editSection"
},
function (data) {
indicatorContainer.html(data);
}
);