在这个问题上绞尽脑汁待了一会儿。我有一个视图和一个局部视图。两者都使用相同的模型 - 尝试使用Viewmodels但遇到了同样的问题。部分视图包含用户信息,如姓名,地址,电话等。视图有一个带有一些文本框的下拉菜单。当我插入部分视图并单击提交时,我的部分值为空。但是,如果我创建一个没有下拉列表的视图,我可以显示部分数据到页面,我甚至可以POST并保存到数据库。问题是当我合并下拉(视图)和部分视图数据时。即使他们使用相同的模型。
我的模型位于
之下public class user
{
public string uFirstName { get; set; }
public string uLastName { get; set; }
public string uPhoneNumb { get; set; }
public string uAddress { get; set; }
public string uEmailAddress { get; set; }
public string degProg { get; set; }
public IEnumerable<SelectListItem> CatList { get; set; }
[Required(ErrorMessage = "*Please select")]
public int CatId { get; set; }
public string CatName { get; set; }
[Required(ErrorMessage = "*Question Required")]
public string questDetail { get; set; } //qt table
public string courseNum { get; set; } //qt table
public string assignNum { get; set; } //qt table
}
这是我的部分观点。在我的存储库中,我没有使用List(ToList())而是使用FirstOrDefault()来获取数据。
@model LibraryMVC4.Models.user
@Html.DisplayFor(m => m.uFirstName) @*Just checking to see if data can display*@
@Html.HiddenFor(m => m.uFirstName)
@Html.HiddenFor(m => m.uLastName)
@Html.HiddenFor(m => m.degProg)
@Html.HiddenFor(m => m.uEmailAddress)
这是我的视图,包含下拉列表和文本框以及部分视图参考。
@model LibraryMVC4.Models.user
@using (Html.BeginForm("UserInfoPost", "AskLib", new { Model.CatId }.ToString(),
FormMethod.Post))
{
@Html.Partial("_userInfo") //Partial View Reference
@("Category of your question: ") @Html.DropDownListFor(m => m.CatId, new
SelectList(Model.CatList, "Value", "Text"), "--Please Select--")
<span style="color:red;">@Html.ValidationMessageFor(x => x.CatId)</span>
<br/><br />
<p>Course Number: @Html.TextBoxFor(m => m.courseNum)</p>
<p>Activity Number: @Html.TextBoxFor(m => m.assignNum)</p>
<br />
<p>Please type your question into the box below.</p>
<span style="color: red;">@Html.ValidationMessageFor(m => m.questDetail)</span><br />
@Html.TextAreaFor(m => m.questDetail, new { style = "width: 500px; height: 200px;" })
<br />
<input type="submit" value="Submit" />
}
这是我的控制器HTTPPOST方法
[HttpPost]
public ActionResult UserInfoPost(user _objResponse)
{
var UserInfo = new quest_tb
{
user_id = "XXXXXXX",
u_first_name = _objResponse.uFirstName,
u_last_name = _objResponse.uLastName,
deg_prog = _objResponse.degProg,
email_address = _objResponse.uEmailAddress,
q_detail = _objResponse.questDetail,
cat_desc = _objResponse.CatId,
course_num = _objResponse.courseNum,
assign_num = _objResponse.assignNum,
date_time = DateTime.Now
};
_libEntity.quest_tb.AddObject(UserInfo);
_libEntity.SaveChanges();
return RedirectToAction("../");
}
对此的任何帮助将不胜感激。我已经涵盖了viewmodels,automapper,PartialViews,甚至是EditorFields / EditorTemplates(我正在使用_layout)的所有内容,所以我不确定我缺少什么。应该很简单。谢谢。