MVC:返回错误URL的视图

时间:2013-03-11 13:24:15

标签: c# asp.net-mvc asp.net-mvc-3

MVC newbee在这里。我有一个MVC3项目,主视图(Index.cshtml)。在此视图中,您可以转到CreateRemark.cshtml视图。您可以在此视图上创建和保存备注。在POST操作中,我有逻辑将数据持久保存到数据库,然后我想再次呈现索引视图。

我在动作CreateRemark的最后写了:

Return View("Index");

我希望我的网址看起来像localhost /或localhost / Index。但它一直说localhost / CreateRemark?id = 123,而它实际上渲染了索引视图上的html。它渲染错误(我没有完全调查,但它缺少按钮中的所有图像,分层网格错过了第二级)我想我可以通过确保我将最终用户指向索引视图来解决这个问题。正确的MVC方式。我想我做错了。

GET / POST操作Index和CreateRemark都在同一个Home控制器中。我想我以后想要一个RemarkController,但还没有这样做。遗憾。

有人能指出我正确的方向吗?在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您只是从同一控制器操作返回不同的视图,因此URL将保持不变。

如果您只是希望发生相同的操作,就好像用户随后使用

调用索引操作一样
  return RedirectToAction("Index");

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

答案 1 :(得分:1)

无论用户导航到,网址都是。如果他们导航到该页面(我假设在“从此视图中您可以转到...”位),然后这是网址

您在Return View("Index")中提供的字符串与网址没有任何关系;这只是告诉view-engine使用哪个视图文件。您可以在此时更改网址的唯一方法是将重定向返回到索引操作/路由:

return RedirectToAction("Index");

这将涉及为客户提供额外的http请求,请注意。