Какой самый стандартный «MVC» способ обновить / обновить часть страницы MVC? - PullRequest
2 голосов
/ 09 января 2012

У меня есть веб-страница с таблицей данных. На моей странице есть jQuery для некоторых элементов, так что при изменении элементов Ajax обращается к базе данных, и элемент обновляется в базе данных.

У меня также есть необходимость когда-нибудь полностью обновить сетку данных. Мне кажется, есть два способа сделать это:

1) Используйте Ajax для вызова действия моего контроллера, проверьте, является ли запрос Ajax с использованием Request.IsAjaxRequest, верните HTML.Partial к javascript, который вызвал Ajax, и обновите HTML. У меня этот метод уже работает на 90%.

Предыдущий вопрос о переполнении стека

2) Используйте следующее:

<div id="#thingy">@Html.Action("Detail", new { ac, me })</div>  
$('#thingy').load("@Server.JavaScriptStringEncode(Url.Action("Detail", new { ac, me }))"); 

Теперь я все еще пытаюсь заставить работать первый метод, но также смотрю на второй метод и думаю, что он выглядит намного проще.

Я хочу написать работающий код, а также код, который больше всего соответствует MVC. Имея это в виду. Какой может быть лучший метод? Одна вещь, которая касается меня, - это код @ Server.Java .... Я никогда не видел этого раньше, и мне интересно, как это обрабатывается с помощью MVC, применяется ли вся нормальная безопасность?

1 Ответ

5 голосов
/ 09 января 2012

мелисса,

Я бы почти определенно придерживался частичного вида (и @RenderPartial()) ЕСЛИ модель в представлении такая же, как и в частичном виде, в противном случае вы можете выбрать помощника @RenderAction() для вызывать обновления данных для вашего представления, где базовый тип данных значительно отличается от типа данных базового представления.

Вы узнаете из своего приложения, какой подход лучше всего подходит для рассматриваемого варианта использования, но определенно RenderPartial () будет подходом к основным, где обновления ajax требуются на более позднем этапе обновления. HTML в div.

[править] - вот как я мог бы это увидеть на практике:

// this is a div contained within the main Detail.cshtml view
<div id="#thingy">@Html.RenderPartial("_Detail", Model)</div>

это автоматически при первом проходе заполняет div из Model против частичного представления _Detail.cshtml. Впоследствии вы вызываете свой ajax для нацеливания на этот же div (#thingy) с помощью действия, которое возвращает частичное представление и модель, как указано выше.

т.е:.

public ActionResult Detail(string ac, string me) {     
   vm.AdminDetails = _link.Detail(ac + me).ToList();      
   if (Request.IsAjaxRequest())         
      return PartialView("_Detail", vm);     
   return View(vm); 
}

Надеюсь, это имеет смысл.

удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...