Нужен ли мне вид для каждого действия? - PullRequest
4 голосов
/ 19 августа 2010

Я давно занимаюсь разработкой в ​​ASP.NET MVC. До этого момента действия контроллера были достаточно простыми. Каждое действие возвращает свой соответствующий вид. Однако недавно я создал действие, для которого мне необязательно нужна страница (цель действия - работа с базой данных).

Мой вопрос - что здесь делать правильно. В конце метода я возвращаю Response.Redirect ('\ Controller \ View'), поэтому я возвращаюсь к другому представлению. Можно ли не возвращать какую-либо точку зрения в конце действия? Каковы лучшие практики здесь?

Ответы [ 4 ]

2 голосов
/ 19 августа 2010

Если вам нужно перенаправить пользователя, потому что он нажал на ссылку, перенаправьте пользователя.

Если ваша публикация с использованием Ajax или другого метода, и нет никакого значимого ответа, измените метод действия контроллера, чтобы иметь возвращаемый тип void.

1 голос
/ 19 августа 2010

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

0 голосов
/ 11 марта 2014

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

Указание вида

public ActionResult Index() 
{
ViewBag.Message = "Modify this template to jump-start
your ASP.NET MVC application.";
return View("~/Views/Example/Index.cshtml");
}

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

0 голосов
/ 19 августа 2010

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

Примите во внимание следующее:

[HttpGet] // Handles only GET requests
public ActionResult Edit(int id)
{
     // get entity from repository
     // and create edit model
     return View(editModel);
}

[HttpPost]
public ActionResult Edit(EntityEditModel editModel)
{
     // if ModelState is valid, save entity
     // and if success redirect to index 
     return RedirectToAction("Index");
}

Первое действие возвращает представление, второе - нет (только еслиModelState недопустим, затем он повторно отображает представление «Правка».И это абсолютно правильно (даже рекомендуется).Но оба действия обрабатывают HTTP-запрос.

...