MVC 5具有Html属性的局部视图

时间:2018-05-31 09:18:02

标签: html asp.net-mvc asp.net-mvc-partialview

我在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新手..!请指教..

3 个答案:

答案 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);
        }
      );