【发布时间】:2015-05-22 11:56:59
【问题描述】:
我将路由配置文件 id 更改为字符串
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Agent_default",
"Agent/{controller}/{action}/{id}",
new { Controller = "Home", action = "Index", id = "" }
);
}
现在我可以像这样http://localhost:43425/Agent/Accounts/Edit/A64h9lStdffgt 获得我的网址了
但我在保存模型时遇到异常。
抛出异常 ModelState.Isvalid - False
说:值“A64h9lStdffgt”对 Id 无效。如何解决这个问题? ModelState.Isvalid 是如何工作的?为什么会出现此错误?
谢谢
【问题讨论】:
-
您的模型是否有一个名为
id的属性?如果有,它是什么类型的? -
id 类型是整数,我还有其他参数“数字”是字符串。我将 'Number' 传递给 url 而不是 'Id'。
-
您正在通过
id,因为您的路线是"Agent/{controller}/{action}/{id}",您需要将路线定义更改为"Agent/{controller}/{action}/{number}",或将您的模型名称id属性更改为其他名称。
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 model-view-controller asp.net-mvc-routing