MVC 5 Частичное представление с атрибутами Html - PullRequest
0 голосов
/ 31 мая 2018

У меня есть частичное представление внутри View в MVC 5. Это частичное представление отображает редактор Markdown в другом разделе основного представления.Вот код редактора уценок в частичном представлении.

<div id="field comments">
</div>    
var editor = new tui.Editor({
el: document.querySelector('#field comments')})

Я называю это частичное в главном представлении как

@Html.Partial("_MarkdownEditor") 

Но проблема в том, что я хочу использовать это частичное представление в другомраздел, передавая различные параметры атрибуту "id". Что-то вроде этого,

@Html.Partial("_MarkdownEditor", new { @id = "executive comments" }) 

Так что это создаст новый экземпляр редактора Markdown с id = "executive comments" и querySelector (#executive comments),

<div id="executive comments">
</div>    
var editor = new tui.Editor({
el: document.querySelector('#executive comments')})

Динамически мне нужно установить как атрибут 'id', так и атрибут querySelector, передав параметр в частичном представлении.Я новичок в MVC ..!Пожалуйста, совет ..

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Вы можете либо передать анонимный объект в качестве модели к частичному:

@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')})
0 голосов
/ 31 мая 2018

Вам необходимо визуализировать ваш частичный вид динамически, в зависимости от параметра.В этом случае сначала вам нужно написать метод действия в вашем контроллере, чтобы он возвращал частичное представление

 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);
        }
      );
0 голосов
/ 31 мая 2018

Если я не помню неправильно, я верю, что вы можете сделать что-то вроде этого:

viewmodel главная страница

public class mainviewmodel
{

    public partialViewModel {get;set}
}

viewmodel частичное

public class partialviewmodel
    {

        public id {get;set}
public classval {get;set;}


    }

, а затемна главной странице вызовите партиал и присвоив ему партиалмодель модели

следующим образом:

@Html.RenderPartial("partialpage", Model.partialviewmodel);

Затем внутри страницы партиала вы можете добавить атрибуты html из модели представления, где вам нужно.

...