我有一個名爲Associations的視圖,它有一個下拉列表和一個按鈕。當用戶選擇一個選項並按提交時,我希望他們去Association/{associationKey}。協會需要在獲取和發佈工作。簡單的MVC表單發佈和網址路由問題....我希望
目前,使用下面的代碼,當表單發佈時,它會轉到關聯並顯示正確的記錄,但它不會將associationKey附加到url。
所以我得到:替代
:
http://localhost/Association/202
如果我手動導航到http://localhost/Association/202一切完美,所以GET和POST兩種工作很好.. .. 我只是想在一個帖子後的URL中的關鍵!
當然,必須有超級簡單的東西,我做錯了。下面的相關代碼。
謝謝!
社團查看:
<% Html.BeginForm("Association", "Staff", FormMethod.Post); %>
<%:Html.DropDownList("associationKey", new SelectList(Model.Associations.ToList(), "AssociationKey", "LegalName"))%>
<input type="submit" value="Edit The Selected Record" />
<% Html.EndForm(); %>
職工控制器:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Association(int associationKey)
{
return View("Association", new AssociationViewModel(associationKey));
}
global.asax中:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Default", "{action}", new { controller = "Staff", action = "Default" });
routes.MapRoute("Associations", "Associations", new { controller = "Staff", action = "Associations" });
routes.MapRoute("Association", "Association/{associationKey}", new { controller = "Staff", action = "Association" });
}
ASSOCIATION視圖模型:
public class AssociationViewModel
{
public Repository db = new Repository();
public Association Association {get; private set; }
public List TelephoneTypes { get; private set; }
public AssociationViewModel(int associationKey)
{
Association = db.AssociationById(associationKey);
TelephoneTypes = db.ListTelephoneTypes().ToList();
}
}
關聯視圖正從關聯視圖發佈到所以沒有關聯視圖傳遞給關聯視圖。我唯一擁有的是associationKey。 – Blackcoil 2010-10-27 18:12:16
通過分裂爲兩個控制器動作,並讓您的POST動作接收到一個AssociationViewModel參數,框架將爲您實例化並綁定模型並將其傳遞給動作方法。嘗試一下,並把一個斷點,看看你得到什麼。只要確保先將一個空構造函數添加到AssociationViewModel類中。 – 2010-10-27 19:22:39
解決方案是雙重的。首先,我像你所建議的那樣分割成GET和POST動作,並將FormCollection傳遞給POST,因爲associationKey在那裏。另外,我的路線錯誤順序。默認路線是最後一個,具體路線最先。 – Blackcoil 2010-10-27 21:24:39