asp.net действие контроллера частичного вида MVC
Я очень новичок в разработке веб-приложений, и я думал, что начну с последних технологий, и поэтому я пытаюсь учиться asp.net так же-как и фреймворк MVC сразу. Это, вероятно, очень простой вопрос для вас, профессионалов MVC.
мой вопрос заключается в том, Должно ли частичное представление иметь связанное действие, и если да, то вызывается ли это действие всякий раз, когда обычная страница использует RenderPartial()
на частичном виде?
4 ответа:
хотя вы можете иметь действие, которое возвращает частичное представление, вам не нужно действие для визуализации частичного представления. RenderPartial принимает частичное представление и отображает его, используя данную модель и данные представления, если они предоставлены, в текущее (родительское) представление.
вы можете захотеть действие, которое возвращает частичное представление, если вы используете AJAX для загрузки/перезагрузки части страницы. В этом случае возврат полного представления не требуется, так как вы хотите только перезагрузить часть страницы. В этом случае вы может иметь действие просто вернуть частичное представление, которое соответствует этому разделу страницы.
стандартный механизм
использование частичного вида в пределах обычного вида (никаких действий не требуется)
...some html... <% Html.RenderPartial( "Partial", Model.PartialModel ); %> ...more html..
механизм Ajax
перезагрузка части страницы через AJAX (Примечание partial отображается в строке начальной загрузки страницы)
...some html... <div id="partial"> <% Html.RenderPartial( "Partial", Model.PartialModel ); %> </div> ...more html... <script type="text/javascript"> $(function() { $('#someButton').click( function() { $.ajax({ url: '/controller/action', data: ...some data for action..., dataType: 'html', success: function(data) { $('#partial').html(data); }, ... }); }); }); </script>
контроллер для AJAX
public ActionResult Action(...) { var model = ... ... if (Request.IsAjaxRequest()) { return PartialView( "Partial", model.PartialModel ); } else { return View( model ); } }
принятый ответ полностью правильный, но я хочу добавить, что вы можете загрузить свой частичный вид с помощью jQuery load. Меньше конфигурации требуется, если вы не хотите рассматривать параллелизм.
$("#Your-Container").load("/controller/action/id");
я смог добиться чего-то подобного с этой логикой.
внутри .cshtml
@Html.Action("ActionMethodName", "ControllerName");
в контроллере
[Route("some-action")] public ActionResult ActionMethodName() { var someModel = new SomeModel(); ... return PartialView("SomeView.cshtml", someModel); }
и это все.
Если вам нужно передать значения из .cshtml к методу действия, то это возможно.
ответа нет. Но иногда вам нужно какое-то действие контроллера за частичным представлением. Затем вы можете создать actionMethod, который возвращает частичный вид. Этот actionMethod может быть вызван в другом представлении:
@Html.Action("StockWarningsPartial", "Stores")
actionmethod может выглядеть так:
public ActionResult StockWarningsPartial() { .... return View("StockWarningsPartial", warnings); }
и вид ' StockWarningsPartial.cshtml ' начинается с:
@{ Layout = null; }
чтобы он не отображал ваш окружающий макет снова.