-1

我改變了我的路線的配置文件ID作爲字符串ModelState.Isvalid在將mvc路由標識更改爲字符串時拋出異常?

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 - 假

話說:值「A64h9lStdffgt」不是有效的標識。如何解決這個問題? ModelState.Isvalid如何工作?爲什麼我得到這個錯誤?

感謝

+0

請問你的模型有一個屬性名爲'id'?如果是這樣,它是什麼類型? – 2015-03-19 11:35:49

+0

id類型是整數,我有其他參數'數字'這是字符串。我將'Number'傳遞給url而不是'Id'。 – Cherry 2015-03-19 11:39:24

+3

因爲您的路由爲「代理/ {控制器}/{動作}/{id}」,您需要將路由定義更改爲「代理/ {控制器}/{操作}/{ number}「,或者將模型的id屬性改爲別的。 – 2015-03-19 11:46:43

回答

2

代表@Stephen Muecke的:

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "Agent_Custom", 
     "Agent/{controller}/{action}/{number}", 
     new { Controller = "Home", action = "Index", number = "" } 
    ); 

    context.MapRoute(
     "Agent_default", 
     "Agent/{controller}/{action}/{id}", 
     new { Controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 
相關問題