1

次のようなモデルの MVC アプリケーションがあります。

public class ListOfMyModel
{
    public List<MyModel> MyModels { get; set; }
    public Guid MyID { get; set; }
}

public class MyModel
{
    // Some code like :
    public string MyString { get; set; }
}

そして、コントローラーの投稿メソッドは次のようになります。

[HttpPost]
public ActionResult EditMe(ListOfModel myList)
{
    try
    {
        if (ModelState.IsValid)
        {
            List<MyModel> myModels = myList.MyModels;

            foreach (MyModel model in myModels)
                // Some code

            return RedirectToAction("Index");
        }
    catch
    {
        // Some code
        return View(myList)

    }
    return View(myList);
}

そして私の見解: (私は Kendo UI を使用しています) (PS: 一部のコードは取り除かれ、コメント コードに置き換えられています)

@model MyApplication.Web.Models.ListOfMyModel
@{
ViewBag.Title = MyTitle;
Layout = "~/Views/Shared/_MyLayout.cshtml";
 }

<div class="span1"></div>
<div class="span8">
    <div id="list-wrapper">
        <div class="k-content">
            <form id="form" class="form-horizontal well span8 offset2" method="post" action="@Url.Action("EditMe")">

            <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="@Url.Content("~/Scripts/jquery-1.9.1.min.js")" type="text/javascript"></script>
            <script src="@Url.Content("~/Scripts/kendo/2013.1.514/kendo.web.min.js")"></script>
            <script src="@Url.Content("~/Scripts/kendo/2013.1.514/kendo.aspnetmvc.min.js")"></script>

             <div class="offset2 span2">
                <fieldset>
                    <legend> My title </legend>
                    <p>Some code :</p>
                    @Html.HiddenFor(m => m.MyID)
                    @for (int i = 0; i < Model.MyModels.Count; i++)
                    {
                    // Some code
                    <div class="control-group">
                        <label class="control-label">MyText : </label>
                        <div class="controls">
                        @(Html.Kendo().DropDownListFor(c =>                 Model.MyModels[i].MyString)
                                        .DataTextField("Text")
                                        .DataValueField("Value")
                                        .DataSource(dataSource => dataSource 
                                            .Read(read => read.Action("GetSomeThings", "MyController"))
                                        )
                                        .Value(Model.MyModels[i].MyString)
                                    )
                         </div> 
                     </div>
                     }
                     <div class="form-actions"> 
                        <button type="submit" class="btn btn-primary">Validate</button>
                    </div> 
                 </fieldset>
              </div>
           </form>
        </div>
    </div>
 </div>

しかし、問題は、ビューで送信ボタンを押すと、コントローラーのメソッドが期待されるすべてのデータ (Chrome で見た) で呼び出されることですが、このメソッドでは、すべてのモデルが null です: ID とリスト。 ..どこに問題があるのか​​わからない?

これを読んで理解しようとしてくれてありがとう。さらに情報が必要な場合は教えてください。

4

1 に答える 1