我想使用视图模型作为编辑表单的输入。叫它 -
public class StudentEditViewModel
{
}
我的编辑操作方法创建对象并将其传递给编辑视图,该视图的@model设置为StudentEditViewModel。这很好 - 所有数据都按预期显示。
但是,当我发布更改(使用)时,事情就会崩溃。这是我的动作处理程序的骨架:
[HttpPost]
public ActionResult Edit(StudentEditViewModel student)
{
}
问题在于"学生"一片空白。所有在线示例似乎都是这样做的,但我显然遗漏了一些东西。任何人都可以帮助我吗?
如果有必要,我很乐意提供更多详细信息。提前谢谢。
答案 0 :(得分:2)
您的StudentEditViewModel
需要属性(例如public string name { get; set;}
),因为StudentEditViewModel
应具有属性基础以使其具有值,并且在您的视图中,使用基本的LINQ语法
using(Html.BeginForm())
{
@html.TextBoxFor(u => u.name)
<input type="submit"/>
}
尝试添加非数据注释ActionResult并检查断点。在我尝试编程之前,这是我的错误。希望我能帮到你。
答案 1 :(得分:1)
您使用的是明确键入的视图模型吗?在这种情况下,您可以通过jquery执行以下操作:
$("#btnSave").click(function (event) {
event.preventDefault();
if ($("#form1").valid()) {
var formInput = $('#form1').serializeObject();
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: 'your controller action url be here',
data: JSON.stringify(formInput)
})
.done(function (data, textStatus, jqXHR) {
showMsg('page-message', 'success', 'Success!', 'The item was saved.');
$('#PriorityDateId').val(data);
window.location.href = 'after save where you want to redirect(give url)';
})
.fail(function (jqXHR, textStatus, errorThrown) {
showResponse('page-message', 'error', 'Error!', jqXHR.responseText);
});
}
});
如果需要更多信息,请告诉我..
答案 2 :(得分:1)
您的模型应包含一些属性:
模型:
public class StudentEditViewModel
{
//Sample Properties
public string Name{get;set;}
public int Age {get;set;}
}
你的观点应该是这样的。
@model Nameofyourproject.Model.StudentEditViewModel
@using(Html.BeginForm())
{
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name) // this where you will enter a value for the Name property
@Html.LabelFor(m => m.Age)
@Html.TextBoxFor(m => m.Age) // this where you will enter a value for the Age property
<input type="submit"/> //this will submit the values to your action method.
}
您现在可以在动作方法中获得此值
[HttpPost]
public ActionResult Edit(StudentEditViewModel student)
{
var name = student.Name;
var age = student.Age;
}