2013-03-11 2 views
0

MVC newbee здесь. У меня есть проект MVC3 с основным представлением (Index.cshtml). С этой точки зрения вы можете перейти к представлению CreateRemark.cshtml. Вы можете создать и сохранить примечание на этом представлении. В действии POST у меня есть логика для сохранения данных в базе данных, а затем я хочу снова отобразить представление индекса.MVC: Обратный просмотр с неправильным URL

Я делаю это в конце моего действия CreateRemark написав:

Return View("Index"); 

Я ожидал, что мой URL будет выглядеть LOCALHOST/или локальный/Index. Но он продолжает говорить localhost/CreateRemark? Id = 123, в то время как он действительно отображает html, который находится в представлении Index. Это делает неправильным, хотя (я не исследовал полностью, но он пропускает все изображения в кнопках, а иерархическая сетка пропускает 2-й уровень), и я думаю, что смогу это решить, убедившись, что я направляю enduser в индексный вид в правильный способ MVC. Я думаю, что я делаю это неправильно.

Указатели GET/POST Index и CreateRemark находятся в одном и том же домашнем контроллере. Я думаю, что позже я хочу RemarkController, но пока этого не сделал. Сожалею.

Может кто-нибудь указать мне в правильном направлении, пожалуйста? Заранее спасибо за вашу помощь.

+0

Просмотры не соответствует URL-адресам, ваша конфигурация маршрута (по умолчанию используется {controller}/{action}. – roryf

+0

Спасибо за ваш ответ. –

ответ

3

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

Если вы просто хотите иметь такое же действие произойдет, как если бы пользователь затем назвал использование индекса действия

return RedirectToAction("Index"); 

http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoaction%28v=vs.108%29.aspx

+0

Это сработало. Большое спасибо. –

1

URL-адресом является любого пользователя перемещаться на. Если они перешли на эту страницу (я предполагаю, что в «Из этого вида вы можете перейти к ...»), то , который является адресом.

Строка, которую вы поставляете в Return View("Index"), не имеет ничего общего с URL-адресами; что просто указывает движок просмотра, который должен использовать файл просмотра. Единственный способ, вы можете изменить URL в этой точке будет возвращать редирект на индекс действия/маршрута:

return RedirectToAction("Index"); 

Это будет включать запрос дополнительный HTTP для клиента, к сведению.

+0

Благодарим вас за дополнительную информацию. Является ли лишний HTTP-запрос для клиента плохим? Это замедлит то, что я предполагаю? Проблема в том, что если я не дам эту переадресацию, иерархическая сетка, которую я использую, по какой-то причине оказывается неправильной. –

+0

«плохой» немного субъективен. прямо, конечно. Как минимум, он добавит, какая бы латентность –

Смежные вопросы