我有一個視圖顯示從ViewModel填充的用戶列表。asp.net mvc3,knockout.js表單提交到服務器
function MyUser(data) {
this.Id = ko.observable(data.Id);
this.phone = ko.observable(data.Phone);
this.Company = ko.observable(data.Company);
this.SelectedGrowerID = ko.observable(data.SelectedGrowerID);
this.setSelectedClass = function (item, event) {
$('#hfGrowerID').val(event.target.id);
this.SelectedGrowerID = event.target.id;
};
}
function UserListViewModel() {
// Data
var self = this;
self.users = ko.observableArray([]);
// Load initial state from server, convert it to MyUser instances, then populate self.users
$.getJSON("UserList/GetAllUsers", function (allData) {
var mappedUsers = $.map(allData, function (item) { return new MyUser(item) });
self.users(mappedUsers);
});
我有一個簡單的形式,列表項綁定到每個用戶的公司。此外,我有一個隱藏字段,當每個listitem被點擊時,我保存了用戶的id。
<form action="UserList/Save" method="post">
<ul id="UserList" data-bind="foreach: users" data-role="listview">
<li data-bind="click: setSelectedClass"><a data-bind="attr: {id: Id}">
<span data-bind="text: Company" /></a></li>
</ul>
<input id="hfGrowerID" type="hidden" />
<input type="hidden" name="users" data-bind="value: ko.toJSON(users)" />
<button type="submit">Save</button>
</form>
在我的UserListController中,我想獲取隱藏字段'hfGrowerID'的值。保存功能如下:
<HttpPost()>
Public Function Save(<FromJson()> users As IEnumerable(Of MyUserModel),
hfGrowerID As String) As ActionResult
'do stuff
Return View ("Index", users)
End Function
現在的問題是,hfGrowerID沒有任何價值和做的Request.Form(「hfGrowerID」)返回什麼爲好。我通過執行alert和console.log驗證了hfGrowerID在單擊列表項後獲得了一個值。
如何獲取不屬於我的ViewModel的隱藏字段的值?
非常感謝您的幫助。
是的,你是對的。我試圖按照你的路徑,但仍然沒有獲得服務器端的價值。編輯初始文章顯示我正在做什麼來保存SelectedGrowerID。我錯過了什麼? – WhatsInAName