部分视图返回null

时间:2014-10-03 20:37:33

标签: asp.net-mvc-4 post model null partial-views

在这个问题上绞尽脑汁待了一会儿。我有一个视图和一个局部视图。两者都使用相同的模型 - 尝试使用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)的所有内容,所以我不确定我缺少什么。应该很简单。谢谢。

0 个答案:

没有答案