相关疑难解决方法(0)

ViewResult()和ActionResult()之间的区别

ViewResult()ActionResult()ASP.NET MVC有什么区别?

public ViewResult Index()
{
    return View();
}

public ActionResult Index()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc

292
推荐指数
5
解决办法
15万
查看次数

ASP.NET MVC控制器方法必须返回ActionResult吗?

作为ASP.NET MVC的新手,我一直想知道Controller方法的签名.在我看过的所有示例中,它们似乎总是返回ActionResult,即使它们实际返回ViewResult实例或类似实例.

这是一个常见的例子:

public ActionResult Index()
{
    return this.View();
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,将方法声明为public ViewResult Index()并获得更强的类型支持是不是更有意义?

实验表明这是有效的,所以似乎有可能.

我确实意识到可能存在需要多态的情况(例如,如果你只想在某些情况下重定向,但在其他情况下显示视图),但如果方法总是返回一个视图,我会发现更多的ViewResult可取的.

就未来的兼容性而言,ActionResult显然提供了更强大的签名,但如果有人控制整个代码库,则总是可以将方法的签名更改为更通用的返回类型(如果将来需要它).

是否有其他我不了解的注意事项,或者我应该继续并使用特定的返回类型声明我的控制器方法?

polymorphism asp.net-mvc actionresult viewresult

57
推荐指数
4
解决办法
3万
查看次数

Actionresult vs JSONresult

我有两个问题:

  1. JSONResult和ActionResult有什么区别?

  2. 何时在MVC中使用JSONResult?

asp.net-mvc jsonresult asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-5

34
推荐指数
3
解决办法
3万
查看次数

使用JsonResult重定向到操作

我有一个观点.当用户点击我视图中的按钮时,我试图从我的视图中获取一些数据,而不通过AJAX POST重新加载我的视图来显示一些数据.

这是我的控制器中的方法:

[HttpPost]
public JsonResult GetUserTraj()
{
    var userTrajList =
        DBManager.Instance.GetUserTraj(Session["UserName"].ToString());
    return Json(userTrajList);
}
Run Code Online (Sandbox Code Playgroud)

这将返回Json结果.我正在尝试实现会话.因此,如果会话已过期,我希望将用户重定向到"登录"视图.在上述情况下,如果会话过期Session["UserName"]变为null并引发异常.

[HttpPost]
public JsonResult GetUserTraj()
{
    if (Session["UserName"] != null)
    {
        var userTrajList =
            DBManager.Instance.GetUserTraj(Session["UserName"].ToString());
        return Json(userTrajList);
    }
    else
    {
        RedirectToAction("Login", "Login");
        return Json(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了上面的代码.但它不起作用.它不会将用户重定向到"登录"视图.我试过了return RedirectToAction("Login", "Login");.但这不起作用,因为控制器动作方法不能返回其他内容JsonResult.请帮我找到相同的解决方案.

c# asp.net-mvc

4
推荐指数
1
解决办法
1万
查看次数