Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以将modelstate错误传递给其他操作?_C#_Asp.net Mvc 3_Routing - Fatal编程技术网

C# 是否可以将modelstate错误传递给其他操作?

C# 是否可以将modelstate错误传递给其他操作?,c#,asp.net-mvc-3,routing,C#,Asp.net Mvc 3,Routing,我使用了两个操作,一个用于请求的get部分(一个通用url),另一个用于帖子 如果帖子有ModelState错误,我希望查看返回以显示错误,但我希望url是通用url 这就是目前发生的情况: Get: http://foo.com/mycontroller Post: http://foo.com/mycontroller/specificviewaction (validation error occurs) Resultant url is: http://foo.com/mycon

我使用了两个操作,一个用于请求的get部分(一个通用url),另一个用于帖子

如果帖子有ModelState错误,我希望查看返回以显示错误,但我希望url是通用url

这就是目前发生的情况:

Get: http://foo.com/mycontroller  
Post: http://foo.com/mycontroller/specificviewaction (validation error occurs)  
Resultant url is: http://foo.com/mycontroller/specificviewaction
我希望它是适当的错误

这是我目前的代码:

    public ActionResult Index()
    {
        // ... do stuff
        return View("specificviewaction ", model);
    }

    [HttpPost] 
    public ActionResult specificviewaction(Model model)
    {
        if (ModelState.IsValid)
        {
        // ... do stuff
        }

        return View("specificviewaction", model);
    }

注意,没有实际的索引视图,只有特定视图。

删除索引操作-您不需要它。 除此之外,只需再添加一个specificviewaction,但对于Get:

[HttpGet]
public ActionResult specificviewaction()
{
    //do smth
    return View("specificviewaction", model);
}
并将以下路由器添加到Global.asax(默认路由之前):


在此url之后,默认情况下“/MyController/”将指向您的“specificviewaction”。

这就是我最后要做的

我按照默认实现保留了路由表

然后,对于每种模型类型,我将在其所属类型的表单中放置一个隐藏字段

在帖子中,我检查它是什么类型,并使用
TryUpdateModel
使用正确的表单值更新模型实例

如果它成功了,那就很好,如果不成功,我可以将适当的错误返回


我试着仔细考虑,最简单的方法是最好的。

这是我试图避免的,我希望用户不要看到细节,而是始终看到通用url。您希望显示哪个url?用户将始终只看到“”所以。。有了这个决定,用户总是只能看到“foo.com/mycontroller”。抱歉-无法理解此解决方案的错误。是的,基本上我有多个类型可供用户编辑,它们实际上只是同一系统的一部分,为了提供更好的用户体验,它们看起来都是相同的“类型”
routes.MapRoute("MyControllerRoute", // Route name
                "MyController/{action}/{id}", // URL with parameters
                new { controller = "MyController", action = "specificviewaction", id = UrlParameter.Optional } // Parameter defaults);