如果你的操作方法的參數名字是id
,
public ActionResult output(string id)
{
//do something
}
,那麼你可以使用你的表單操作的網址是這樣的。(默認路由會照顧好休息)
/Shops/output/somestringhere.
如果你有不同的名稱,使用它作爲查詢字符串
public ActionResult output(string name)
{
//do something
}
現在使用表單操作URL像
/Shops/output?name=somestringhere
另一個建議你的代碼是爲了避免可視數據用於呈現落下。嘗試使用強類型的視圖模型,以及將數據傳輸到視圖的屬性。也嘗試從您的視圖中移動您的JavaScript並使其變得無力。這樣你的視圖只能保持乾淨的標記。
假設您想要在文檔創建視圖中顯示修訂下拉列表,請將屬性添加到您的視圖模型以獲取下拉項目。
public class DocumentCreateViewModel
{
//Other properties also here
public List<SelectListItem> Revisions{ set;get;}
public int SelectedRevision { set;get;}
public DocumentCreateViewModel()
{
Revisions=new List<SelectListItem>();
}
}
並且在您的GET操作中,將下拉內容填充到Revisions屬性。
public ActionResult Create()
{
var vm=new DocumentCreateViewModel();
vm.Revisions=GetRevisionItemsFromSomeWhere();
return View(vm);
}
而在你的強類型的視圖,
@model DocumentCreateViewModel
@using(Html.Beginform())
{
@Html.DropDownListFor(x => x.SelectedRevision,
new SelectList(Model.Revisions,"Value","Text"), "Select..")
<input type="submit" />
}
我們處理表單提交下拉的變化事件,添加此腳本。
$(function(){
$("#SelectedRevision").change(function(){
var _this=$(this);
var selectedRevision=_this.val();
$("form#YourFormIDHere")
.attr("action","./Shops/output/"+selectedRevision).submit();
});
});
代替硬編碼的URL到店/輸出,你可以使用剃刀助手方法(@Url.Action
),以獲得正確的路徑。
謝謝老兄,我對MVC很認真,並且還是一名學生,但這種做事方式顯然要好得多,禮儀和編程實踐。我不確定在創建下拉列表時(視頻中的倒數第二部分),我無法理解視圖中發生了什麼? – 2013-03-12 14:46:11
@ barnacle.m:DropDownListFor幫助器方法將在視圖中呈現下拉菜單。反正歡迎來到ASP.NET MVC的精彩世界:) – Shyju 2013-03-12 14:49:32
哈哈謝謝。公共ActionResult創建(),是在我的控制器類? – 2013-03-12 18:46:05