【发布时间】:2015-01-02 04:50:55
【问题描述】:
我想创建一个 MVC 表单来编辑用户数据。
在控制器中我创建了以下方法:
public ActionResult UserEdit(DemoRes.Models.User user)
{
checkSignIn();
return View("User", user);
}
public ActionResult UserSave(DemoRes.Models.User user)
{
checkSignIn();
MongoDBManager dal = new MongoDBManager();
dal.EditUser(user);
return RedirectToAction("UserManagement");
}
在“用户管理”表单中,从列表中选择一个用户并将其传递给控制器中的 UserEdit。表格“用户”然后出现填充用户数据 - 因此数据成功地从控制器传递到视图。在视图中,我想让用户更新数据或只是“取消”操作并返回用户列表。
为此,我创建了以下 User.cshtml 表单:
@{
ViewBag.Title = "User";
}
<script>
$(function(){
$("#btnCancel").click(function(){
window.location.href = url;
return false;
});
});
$(function(){
$("#btnSubmit").click(function(){
$.ajax({
url: "@Url.Action("UserSave", "Admin")",
type: "POST",
data: data
});
window.location.href = url;
return false;
});
});
function SubmitFrm(){
var Searchtxt = document.getElementById("txtSearch").value;
window.location = $("#RedirectTo").val();
}
</script>
@Html.Hidden("RedirectTo", Url.Action("UserManagement", "Admin"));
<h2>User</h2>
<div class="container">
<form role="form">
<div class="form-group">
<label for="username">Username:</label>
<input type="text" class="form-control" id="username" data-bind="value:username">
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="text" class="form-control" id="email" data-bind="value:email">
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="text" class="form-control" id="password" data-bind="value:password">
</div>
<div class="checkbox">
<label><input type="checkbox" id="isActive" data-bind="checked:isActive">Is active</label>
</div>
@if (ViewBag.Owners != null)
{
<div class="form-group">
<label for="prop">Owners:</label>
<select class="form-control">
@foreach (DemoRes.Entities.Owner o in ViewBag.Owners)
{
<option value=@o.Id.ToString()>@o.FirstName @o.LastName</option>
}
</select>
</div>
}
<button type="submit" class="btn btn-default" value="Cancel" name="addEditUser" id="btnCancel">Cancel</button>
<button type="submit" class="btn btn-default" value="Submit" name="addEditUser" id="btnSubmit">Save</button>
</form>
</div>
<script>
var data=@(Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)));
function viewModel() {
this.username=ko.observable(data.Username);
this.password=ko.observable(data.Password);
this.email=ko.observable(data.Email);
this.isActive=ko.observable(data.IsActive);
};
ko.applyBindings(new viewModel());
var url = $("#RedirectTo").val();
当用户点击“保存”按钮时,会调用以下函数:
$(function(){
$("#btnSubmit").click(function(){
$.ajax({
url: "@Url.Action("UserSave", "Admin")",
type: "POST",
data: <modified data>
});
window.location.href = url;
return false;
});
});
在这里,我不知道将修改后的数据传回控制器中的 UserSave 方法的正确方法是什么。如果有人提出正确绑定数据的方法,我将非常感激。
【问题讨论】:
-
类型:“POST”,数据:{ 用户名:$("#username").val(),密码:... }