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
Asp.net mvc 3 mvc3 IModelBinder和url_Asp.net Mvc 3_Model Binding_Imodelbinder - Fatal编程技术网

Asp.net mvc 3 mvc3 IModelBinder和url

Asp.net mvc 3 mvc3 IModelBinder和url,asp.net-mvc-3,model-binding,imodelbinder,Asp.net Mvc 3,Model Binding,Imodelbinder,我在使用iModelBinder时遇到问题,url格式为 该操作将是控制器中的函数 id/值为ie.id=12 当我尝试上面的链接时,我收到一个404错误页面not found,查看堆栈我可以理解MVC正在寻找一个它不理解的路径 使用以下作品 如果有人知道这个问题是否可以解决,我真的希望能够使用“/”作为分隔符 Vinceurl的格式应为: http://localhost/controller/action/id 例如: http://localhost/products/index/1

我在使用iModelBinder时遇到问题,url格式为

该操作将是控制器中的函数 id/值为ie.id=12

当我尝试上面的链接时,我收到一个404错误页面not found,查看堆栈我可以理解MVC正在寻找一个它不理解的路径

使用以下作品

如果有人知道这个问题是否可以解决,我真的希望能够使用“/”作为分隔符


Vince

url的格式应为:

http://localhost/controller/action/id
例如:

http://localhost/products/index/1
public ActionResult Index(int id)
{
    ...
然后应在控制器操作中指定id。例如:

http://localhost/products/index/1
public ActionResult Index(int id)
{
    ...
global.asax文件中指定的路由将指定url的格式。对于上述url,默认路由就足够了:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
然后,默认模型绑定器将自动将您的id(即上面url中的1)绑定到操作中的int id


正如Adam所建议的那样,我认为您不应该在url中指定id的名称,因为默认的模型绑定器会自动为您绑定id。

有什么特别的原因不需要像大多数MVC应用程序那样,关闭id并让您的路由定义为您绑定id?嗨,很多处理都是在客户端完成的,MVC站点将返回SOLR引擎以获取数据。到目前为止,我唯一能弄清楚如何将客户机选择传回服务器的方法是使用URL将它们传递给bakc。问题是它有点违反了MVC标准,但我真的想不出其他方法来实现它way@Adam:是的,这是有原因的。因为说你有/x/5、2/y/7或#/x/5,2或#/y/7,但从来没有/y/7或#/y/7/x/5,2。。。参数的顺序必须始终相同,以免有两个URL指向完全相同的内容。@Vince-您应该发布视图和控制器操作,以便更好地说明您要实现的目标。@sfjedi-我不确定是否理解您的推理?什么是#!代表什么?你可以拥有#/是的,但从来没有/y/7?那么您可以拥有哪一个(尽管我不确定两者都是什么)。控制器接收一个IEnumerable对象,IModelBinder首先从查询编译该对象。“public ActionResult GetSomething(IEnumerable myObject){}@Vince-我不确定我是否理解。这与您关于url的…/id/value部分的问题有什么关系?