Asp.net mvc 4 在ASP.NET MVC 4中按模型将Url参数传递给操作
我想将url参数分配给模型属性,并作为参数传递给关联的操作。比如, 我的网址是 我在控制器内的操作如下所示:Asp.net mvc 4 在ASP.NET MVC 4中按模型将Url参数传递给操作,asp.net-mvc-4,model,url-parameters,Asp.net Mvc 4,Model,Url Parameters,我想将url参数分配给模型属性,并作为参数传递给关联的操作。比如, 我的网址是 我在控制器内的操作如下所示: public class ItemController : Controller { public ActionResult Index(MyModel myModel) { // return View(myModel); } } 我想配置模型或任何必要的配置,以便我的模型将颜色和大小作为字段值。以下操作不起作用: publi
public class ItemController : Controller
{
public ActionResult Index(MyModel myModel)
{
//
return View(myModel);
}
}
我想配置模型或任何必要的配置,以便我的模型将颜色和大小作为字段值。以下操作不起作用:
public class MyModel
{
[Display(Name = "color")]
public string Color{ get; set; }
[Display(Name = "size")]
public string Size{ get; set; }
}
解决这个问题的正确方法是什么
谢谢你的建议
使现代化
嗯,是的!上面的代码可以正常工作,因为Url参数名称与模型属性名称相同。我应该解释我的问题,就像我下次遇到的一样,对不起
我必须把问题的一部分更正清楚。url应该是:以检测问题
如果url是这样的,那么代码将无法工作。因为Url参数与模型属性的名称不同
更新模型如下:
public class MyModel
{
[Display(Name = "c")]
public string Color{ get; set; }
[Display(Name = "s")]
public string Size{ get; set; }
}
尝试在参数前面添加[FromUri]
public class ItemController : Controller
{
public ActionResult Index([FromUri] MyModel myModel)
{
// do something
return View();
}
}
调试问题
下面是调试该问题的一些建议,因为它应该是开箱即用的
- 尝试绑定到基元类型 public class ItemController : Controller { public ActionResult Index(string color, string size) { // do something return View(); } } 公共类ItemController:控制器 { 公共操作结果索引(字符串颜色、字符串大小) { //做点什么 返回视图(); } }
- 尝试直接读取请求对象 var size = this.Request["size"]; var size=this.Request[“size”]李>
有一个可能有用的html助手示例。它不起作用,因为您操作的参数类型为MyModel,而您使用的模型类型为PageModel。有什么问题?您的代码将为
MyModel
的属性分配值(但您不会对模型执行任何操作-例如返回视图(模型);
)我的代码不会分配值。这就是问题所在。我可以在调试模式下看到问题。不需要使用模型来查看问题。这不是重点,也就是说,使用模型与否。当然,它是这样的。如果这不起作用,代码中显然还有其他问题。在这种情况下,请使方法public ActionResult Index(string c,string s)
并使用这些值初始化MyModel
的新实例,或者更改属性的名称-public string c{get;set;}public string s{get;set;}
OK。我必须承认这是一个漫不经心的问题。实际上,我想指出的技巧是如何从URL到模型获取参数。在调试模式下点击Action方法没有问题。@mhmtztmr我认为这可能是原因,但最好先指出明显的错误。我已经相应地更新了我的答案。@mhmtztmr您的示例应该是开箱即用的。您可以尝试使用更准确的代码更新您的问题,或者提供重现问题的项目。我添加了一些您可能会尝试缩小问题范围的内容。我已将我的问题更新为我遇到问题的确切形式。