Asp.net mvc 我需要每个动作的视图吗?

Asp.net mvc 我需要每个动作的视图吗?,asp.net-mvc,view,controller,action,Asp.net Mvc,View,Controller,Action,我在ASP.NETMVC中开发了一段时间。到目前为止,控制器的操作相当简单。每个操作都返回其相应的视图。但是,我最近创建了一个不需要页面的操作(操作的目的是使用数据库) 我的问题是——在这里应该做什么。在方法的末尾,我返回Response.Redirect('\Controller\View'),因此我返回到另一个视图。是否可能在操作结束时不必返回任何类型的视图?这里的最佳做法是什么?如果因为用户单击了链接而需要重定向用户,请重定向用户 如果您使用Ajax或其他技术发布,并且没有任何有意义的响应

我在ASP.NETMVC中开发了一段时间。到目前为止,控制器的操作相当简单。每个操作都返回其相应的视图。但是,我最近创建了一个不需要页面的操作(操作的目的是使用数据库)


我的问题是——在这里应该做什么。在方法的末尾,我返回Response.Redirect('\Controller\View'),因此我返回到另一个视图。是否可能在操作结束时不必返回任何类型的视图?这里的最佳做法是什么?

如果因为用户单击了链接而需要重定向用户,请重定向用户


如果您使用Ajax或其他技术发布,并且没有任何有意义的响应,请将控制器操作方法更改为返回类型为void。

如果您使用Ajax发布,并且不需要重定向用户或显示新视图,您可能需要考虑返回一个字符串,该字符串将确认消息显示给用户。

< P>我会说,一个操作应该总是处理一个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请求。

您可以使用tilde语法提供视图的完整路径,如下所示:

指定视图

public ActionResult Index() 
{
ViewBag.Message = "Modify this template to jump-start
your ASP.NET MVC application.";
return View("~/Views/Example/Index.cshtml");
}
使用tilde语法时,必须提供视图的文件扩展名,因为这会绕过
视图引擎用于查找视图的内部查找机制。

我也有同样的问题。但我可以进一步问你的问题吗。当你说使用数据库时,你的具体意思是什么?运行insert语句或其他什么?您可以重定向或返回从ActionResult继承的某个对象。我认为您可以这样做…但了解这里的最佳实践会很有趣。请不要在标题中添加标记。修正了你的叛逆行为-是的。基本上,用户在页面上单击“Save Form”(保存表单),表单就被保存了,他们应该留在页面上(我只是用一些jQuery来显示表单已经保存在一篇成功的文章中)。我真的不想将用户重定向到任何地方。让他们留在页面上,谢谢。是的,我使用jQuery显示一条fadeIn/fadeOut消息,让用户知道保存(又名帖子)成功了。谢谢,jfar!我曾想过这样做,但在研究谷歌时,我有点困惑这是否被接受。从你的答案和其他答案来看,这似乎没问题。(是的,这是一篇Ajax文章。)