MVC Post具有动态路由功能

时间:2009-12-28 17:53:36

标签: asp.net-mvc asp.net-mvc-routing

我创建了一个路由结构,而URL的操作部分则用作选择特定用户创建的系统名称的动态处理程序。即。

http://mysite.com/Systems/[SystemName]/Configure,其中[SystemName]指定他们想要配置的系统的名称。

路由系统的方法如下:

public ActionResult Index(string systemName, string systemAction)
    {

        ViewData["system"] = _repository.GetSystem(systemName);
        if (systemAction != "")
        {
            return View(systemAction);
        }
        else
        {
            // No Id specified.  Go to system selection.
            return View("System");
        }
    }

上述方法将系统设置为配置并路由到静态方法,其中显示视图并且表单等待值。

我的问题是,当我创建配置视图时,在提交表单时丢失了我的发布值,因为它会路由回上面的索引控制器。如何在点击我的上述索引控制器时确定是否正在发布数据,以便我可以做出决定?

谢谢! 乔治

1 个答案:

答案 0 :(得分:1)

注释处理POST的控制器方法,如下所示:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string systemName, string systemAction)
{
   // Handle posted values.
}

您可以在控制器中使用不同的方法来处理GET:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(string systemName, string systemAction)
{
   // No posted values here.
}

请注意,尽管我在每种情况下都复制了相同的方法和参数,但第二种方法(参数和类型)的签名必须不同,因此这两种方法不会有歧义。

NerdDinner tutorial has examples