Asp.net mvc 3 带参数的MVC路由

Asp.net mvc 3 带参数的MVC路由,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc 3,Asp.net Mvc Routing,我有一个MVC3应用程序。 对于像我这样的URI,下面的调查/{name}非常有效 此调查管理员将加载一系列问题 每个问题都有一系列可能的答案 可能的答案被放入DropDownList框或其他一些列表友好控件中 现在,如果一个用户点击了一个URI,就像我想在我的模型中以某种方式弄明白的那样。问题[I]。可能的答案集合伦敦是问题“城市”的默认值 如果用户点击一个URI,如 然后我希望测试调查显示 性别问题默认为男性 城市问题默认为伦敦 这是一个默认的问题 有什么意义吗? 有人知道怎么设置吗 这有点

我有一个MVC3应用程序。 对于像我这样的URI,下面的调查/{name}非常有效

此调查管理员将加载一系列问题
每个问题都有一系列可能的答案
可能的答案被放入DropDownList框或其他一些列表友好控件中

现在,如果一个用户点击了一个URI,就像我想在我的模型中以某种方式弄明白的那样。问题[I]。可能的答案集合伦敦是问题“城市”的默认值

如果用户点击一个URI,如
然后我希望测试调查显示
性别问题默认为男性
城市问题默认为伦敦
这是一个默认的问题

有什么意义吗?
有人知道怎么设置吗

这有点模糊,很抱歉,但我能想到的最好的描述方式


谢谢

您可以使用下面的模型绑定,然后通过

调查模型

您可以使用SurveyModel创建控制器动作中的动作方法。城市调查的id model.id2等

  public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            IValueProvider valueProvider = bindingContext.ValueProvider;

            string id = valueProvider.GetValueOrNullString("id");
            string id2 = valueProvider.GetValueOrNullString("id2");
            string id3 = valueProvider.GetValueOrNullString("id3");
            string id4 = valueProvider.GetValueOrNullString("id4");

            return new SurveyModel {Id = id, Id2 = id2, Id3 = id3, Id4 = id4};
        }

请参阅除了在
HttpGet
操作中指定您的模型外,您无需执行任何操作,如下所示:

[HttpGet]
public ActionResult Test(Survey survey)
{ }

如果您在GET操作中指定了一个模型,querystring值将被传递到模型中,因为它们被
QueryStringValueProvider
使用,这使得它们可以绑定到您的模型,而无需您采取任何进一步的操作。

只是一个粗略的想法。。但是,由于您的控制器已经在响应,您可以在控制器操作中创建检查查询参数的检查。如果填写了某些参数,您可以使用特定用户的默认值设置Viewmodel(假设您使用的是strong类型的viewmodels)。