1

実行後、ユーザー名テキストボックスに値を入力して送信ボタンをクリックすると。コントローラーで、null 値を表示しているオブジェクトを確認します.... forloop を削除して、その動作を一覧表示すると ... 解決策を教えてください

コントローラー:

 [HttpGet]
        public ActionResult Index()
        {
            return View();
        }


        [HttpPost]
        public ActionResult Index(LogonViewModel lvm)
        {
            LogonViewModel lv = new LogonViewModel();

            return View();
        }

モデル:

 public class LogonViewModel
    {
        [Required(ErrorMessage = "User Name is Required")]
        public string UserName { get; set; }
    }

意見

@model IList<clientval.Models.LogonViewModel>

@{
    ViewBag.Title = "Index";
}

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>   
<script src="../../assets/js/val.js" type="text/javascript"></script>

@using (Html.BeginForm())
{
    for (int i = 0; i < 1; i++)
    {  
    @Html.LabelFor(m => m[i].UserName)
    @Html.TextBoxFor(m => m[i].UserName)
     @Html.ValidationMessageFor(per => per[i].UserName)

    <input type="submit" value="submit" />
    }
}
4

2 に答える 2

2

POST コントローラー アクションはコレクションを取得する必要があります。それがビューにあるためです。

[HttpPost]
public ActionResult Index(IList<LogonViewModel> lvm)
{
    ...
}
于 2012-07-28T07:58:03.273 に答える
1

ビューで作成し、サーバーに送信しています -複数の名前。TextBoxFor(m => m[5].UserName)MVCを使用すると、 が生成され<input type=text name="[5].UserName>ます。したがって、コントローラーで複数の名前も受け入れる必要があります。

アクション署名を次のように変更します。

[HttpPost]
public ActionResult Index(LogonViewModel[] lvms)

(そしてあなたをあなたのsubmit外に移動するとfor、とにかくフォーム全体が送信されます)

于 2012-07-28T07:57:43.327 に答える