mvc3 IModelBinder 和 url

发布于 2025-01-03 12:08:13 字数 466 浏览 1 评论 0原文

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

http://localhost/controller/action/id /value

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

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

使用以下作品

http://localhost/controller/action?id=value

如果任何人想法如果这个问题可以解决,我真的很希望能够使用“/”作为分隔符。

文斯

I'm having a problem using iModelBinder with url in the format of

http://localhost/controller/action/id/value

the action would be the function in the controller
the id/value is ie. id=12

When I try the above link i receive a 404 error page not found, and looking at the stack I can understand that MVC is looking for a path it does not understand.

using the following works

http://localhost/controller/action?id=value

If anyone as any idea if this problem can be resolved, I would really like to be able to use "/" as separators.

Vince

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心如狂蝶 2025-01-10 12:08:13

url 的格式实际上应该是:

http://localhost/controller/action/id

例如:

http://localhost/products/index/1

然后应该在控制器操作中指定 id。例如:

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 的名称,因为默认模型绑定程序会自动将其绑定到您。

The url should really be in the format:

http://localhost/controller/action/id

For example:

http://localhost/products/index/1

And the id should then be specified in the controller action. For example:

public ActionResult Index(int id)
{
    ...

The route specified in the global.asax file will specify the format of the url. For the above url the default route will suffice:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

Then the default model binder will automatically bind your id (i.e. 1 in the above url) to the int id in the action.

Like Adam was suggesting, I don't think you should specify the name of the id in the url as it is automatically bound to for you by the default model binder.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文