2010-11-02 58 views
1

變型,當我有一個形式定義爲URL參數使用Html.BeginForm

<% using (Html.BeginForm("Update", "CcisCase", FormMethod.Post, new { id = "ccisEditForm" })) 

一個提交按鈕的視圖ASP.MVC未出現該RegisterRoutes方法(在global.asax.csHttpApplication派生類),我有:

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "CcisCase", 
      "CcisCase/{action}/{cmDatabaseId}/{caseId}", 
      new { Controller = "CcisCase", Action = "CcisCaseEdit", caseId = "" }); 

MVC生成的URL以「/ Update」結尾,但沒有參數。我究竟做錯了什麼?

感謝, 鮑勃

回答

2

你期待什麼參數看?一個帖子不會將參數附加到查詢字符串,FormMethod.Get會。而且,使用id的重載是爲標記呈現的HTML屬性集合(我假設您知道,但以防萬一)。

HTH。

1

您的路線包含一個參數{caseId},但您的BeginForm只定義一個id值。

new {id = "cssEditForm"} 

你,如果你的動作不使用id =「ccisEditForm」值,那麼你可以刪除了更少的代碼雜亂需要像這樣的東西包括caseId值

using (Html.BeginForm("Update", "CcisCase", FormMethod.Post, new { caseId = 1, id = "ccisEditForm" } 

+0

謝謝。我剛剛發佈了我的修復程序,並且必須同時使用強類型的RouteValueDictionary和Dictionary參數(稍後請參閱我的答案)。 – bobuva 2010-11-02 23:01:22

1

我想出了我的問題是什麼。我不得不通過現有的路線數據如下:

 using (Html.BeginForm("Update", "CcisCase", ViewContext.RouteData.Values, FormMethod.Post, new Dictionary<string, object> { { "id", "ccisEditForm" } }))