绑定文本框以在MVC4中建模

时间:2013-05-03 11:35:13

标签: c# asp.net-mvc-3 textbox model-binding

在我的MVC应用程序中,我已经基于Model.Count指定了两个条件来显示View中的值。
查看

  @model IEnumerable<SampleECommerce.Models.DetailsModel>
  @using (Html.BeginForm("Details", "Grid", new { UserID = Request.QueryString["UserID"], partnerid = Request.QueryString["Partnerid"] }, FormMethod.Post))
    {
    if (Model.Count() == 0)
    {
    @foreach (var item in Model)
    {
        <table>
            <tr>
                <td>
                    @Html.DisplayNameFor(model => model.FirstName)
                    <input id="FirstName" type="text" class="TextBoxBorder" name="FirstName" value="@item.FirstName" /> // When the Model count is zero, the label and textbox is not displayed.
                </td>
            </tr>
        </table>
    }
    else
    {
    @foreach (var item in Model)
    {
        <table>
            <tr>
                <td>
                    @Html.DisplayNameFor(model => model.FirstName)
                    <input id="MFirstName" type="text" class="TextBoxBorder" name="FirstName" value="@item.FirstName" />
                </td>
            </tr>
        </table>
    }


控制器

    public ActionResult Details()
       {
           string userid = Request.QueryString["UserID"];
           string partnerid = Request.QueryString["Partnerid"];

           con.Open();
           SqlCommand cmd = new SqlCommand("select FirstName from Details where UserID = +userid+", con);

       SqlDataReader dr = cmd.ExecuteReader();
       List<DetailsModel> objmodel = new List<DetailsModel>();
       while (dr.Read())
       {
           objmodel.Add(new DetailsModel()
           {
               FirstName = dr["First Name"].ToString(),


           });
       }
       dr.Close();

       return View(objmodel);
   }

当Model.Count为零时,不显示标签和文本框 我想基于userid在model.count为零时向textbox插入新值
我试图绑定文本框以模拟Link中指定的所有方式。
1. @ Html.TextBoxFor(model =&gt; model.FirstName) FirstName中的错误说明“System.Collections.Generic.IEnumerable找不到FirstName的定义或没有扩展方法”
2. @ Html.TextBox(model =&gt; model.FirstName) “错误说明无法将Lamba表达式转换为字符串类型”
当model.count为零时,如何将文本框值绑定并显示到模型。 有什么建议??

1 个答案:

答案 0 :(得分:2)

Model.Count为0时,foreach什么都不做。

  @model IEnumerable<SampleECommerce.Models.DetailsModel>
  @using (Html.BeginForm("Details", "Grid", new { UserID = Request.QueryString["UserID"], partnerid = Request.QueryString["Partnerid"] }, FormMethod.Post))
    {
        <table>
        if (Model.Count() == 0)
        {

                <tr>
                    <td>
                        @Html.DisplayNameFor(model => model.FirstName)
                        <input id="FirstName" type="text" class="TextBoxBorder" name="FirstName" /> // When the Model count is zero, the label and textbox is not displayed.
                    </td>
                </tr>
        }
        else
        {
                @foreach (var item in Model)
                {

                        <tr>
                            <td>
                                @Html.DisplayNameFor(model => model.FirstName)
                                <input id="MFirstName" type="text" class="TextBoxBorder" name="FirstName" value="@item.FirstName" />
                            </td>
                        </tr>

                }
        }
        <tr>
            <td>
                <input type="submit" value="submit" />
            </td>
        </tr>
        </table>
    }