1
我有一個部分視圖(search.ascx),其中包含一個下拉列表,一個文本字段和一個提交按鈕。根據下拉列表值動態修改表單操作
當點擊提交按鈕時,我希望表單操作方法反映在下拉列表中選擇的值。
E.g.在drowpdownlist包含的值,例如:
- DVD
- VHS
所以,通過選擇 「VHS」,最終行動網址應爲:
site.com/DVD?搜索= TextDefinedInTheTextField。 如何做到這一點?
當前實現
<% using(Html.For.BeginForm("List", "Products", FormMethod.Get)) { %>
<%: Html.DropDownListFor(model => model.CategoryName, Model.TopLevelCategoriesList, new {@class = "searchCategoryDropDown" })%>
<%: Html.TextBoxFor(x => x.SearchString, new {@class = "searchField" })%>
<a>
<input class="searchBtn" id="searchButton" type="submit" value="Søg" />
</a>
<% } %>
與上述實施的問題是,創建生成的「形式」的標籤是靜態的,並不能反映該下拉列表值。
任何想法?
更新解決方案 所以,我想通了,通過使用Jquery,你可以動態地修改表單上的動作。
$(function() {
$('#searchForm').submit(function() {
this.action = $('#searchCategory').val();
return true;
});
});
你說得對,我其實已經考慮過了。但是,我沒有找到任何正確的解決方案,因爲我會有很好的和清晰的URL:domain.com/DVD?search=TheMatrix。如果我應該按照您的建議進行操作,我認爲這是正確的解決方案,那麼我的網址就是:domain.com/?category=DVD&search=TheMatrix。我是對的,還是有避免這種情況的好方法? – Nima 2011-06-02 21:03:26
如果您發佈表單,那麼您的基本URL和您的控制器方法簽名可以將參數綁定到組合框或您的模型中的名稱,或者甚至直接在您的控制器方法中直接從表單中讀取它。只要確保你的表單方法的價值是後不能得到。 – 2011-06-03 04:57:59