想在mvc4 regor中添加多个文本框

时间:2013-08-22 06:49:10

标签: asp.net-mvc-4

我有两个Model Class

public partial class EndUser
{
    public EndUser()
    {
        this.Mobiles = new List<Mobile>();
    }

       public virtual long Id { get; set; }
       public virtual string FullName { get; set; }

       [DataType(DataType.Password)]
       public virtual string UserPassword { get; set; }
       public virtual string Email { get; set; }
       public virtual IList<Mobile> Mobiles { get; set; }

    public partial class Mobile
    {
       public virtual long Id { get; set; }
       public virtual string Number { get; set; }
       public virtual EndUser EndUser { get; set; }
    }

我的控制器

    public ActionResult CreateClient()
    {
        return View("CreateClient");
    }

脚手架模板创建我的视图

CreateClient

@using (Html.BeginForm())
{
@Html.ValidationSummary(true)

<fieldset>
    <legend>EndUser</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.FullName)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.FullName)
        @Html.ValidationMessageFor(model => model.FullName)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.UserPassword)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.UserPassword)
            @Html.ValidationMessageFor(model => model.UserPassword)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Email)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Email)
            @Html.ValidationMessageFor(model => model.Email)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

但我想在此视图中添加我的客户端移动设备。如何创建多重(未知)文本字段以添加移动号码?如果客户有多个手机号码,可以点击“添加更多号码”按钮添加更多文本框。我无法为手机号码字段创建文本框。

请帮帮我。我是MVC的新人。

2 个答案:

答案 0 :(得分:1)

这并不像你想象的那么容易......

检查this以获取快速信息。查看this以获取完整的操作方法

答案 1 :(得分:0)

您可以通过几个步骤恢复它。

  1. 创建一个视图(即)&#34; DynamicMobileForm&#34;如果你有一个foreach Model.Mobiles,它应该为每个项目创建一个文本框。
  2. 在控制器中,创建一个Get方法以仅检索此部分DynamicMobileForm视图(您可以使用相同的模型,至少应包含您的Mobiles属性)
  3. 在您的ABM表单中,删除任何有关移动设备的HTML,并将其粘贴: @{Html.RenderPartial("DynamicMobileForm", Model);}这将仅呈现此部分。
  4. 现在你只需要一种方法来动态增加编辑器的数量,这很容易,创建一个按钮,并且jquery用POST方法执行对控制器的调用,比如DynamicMobileFormAddRow ...在这个方法中,你只有需要在Model.Mobiles列表中添加()一个新实例,并返回与GetMethod相同的模型。
  5. 页面加载时,仅渲染部分部分,添加新文本框,当您提交时,会自动将其发布到您的Mobiles数组中。

    希望它有所帮助。