无法让Kendo MultiSelect提交

时间:2017-03-06 15:05:46

标签: asp.net model-view-controller

我有一段似乎有效的代码,但下拉菜单中的Request变量根本没有。

这是我的一段代码:

@using (Html.BeginForm("Search", "Search"))
{
    <tr>
        <td style="padding: 5px; vertical-align: top">
            @Html.LabelFor(x => x.City, "Postort:")
        </td>
        <td style="padding: 5px; vertical-align: top">
            @Html.TextBoxFor(x => x.City)
        </td>
        <td style="padding: 5px; vertical-align: top">
            @Html.LabelFor(x => x.CMC, "CMC:")
        </td>
        <td style="padding: 5px; vertical-align: top">
            <div class="demo-section k-content">
                @(Html.Kendo().MultiSelectFor(x => x.CMC)
                      .BindTo(new SelectList(ViewBag.CMC, "UnitId", "Name"))
                      .Filter(FilterType.Contains)
                      .Placeholder("Välj ett eller flera CMC...")
                )
            </div>
        </td>
        <td style="padding: 5px">
            Visa inte matchade:<br/>
            Exakt matchning:<br/>
            Endast Aktiva:
        </td>
        <td style="padding: 5px">
            @Html.CheckBoxFor(x => x.OnlyUnmatched )<br/>
            @Html.CheckBoxFor(x => x.ExactMatch)<br />
            @Html.CheckBoxFor(x => x.OnlyActive )<br />
        </td>
    </tr>
    <tr>
        <td colspan="6" style="text-align: center">
            <input type="Submit" text="Sök" value="Sök" name="Sök"/>
        </td>
    </tr>
}

其他所有内容都没有问题。我的模型连接是:

@model ABRsite.Models.SearchABR

但那不重要,因为当我调试时,我总是对CMC感到不满。 SearchABR包含一个List,但没有骰子。请求没有回来。

更新

我做了几处更改,其中包括初始化模型对象内的列表。 所以,按时间顺序,它现在看起来像这样:

控制器:

    public ActionResult Search()
    {
        SearchABR searchModel = new SearchABR
        {
            CMC = new List<CMCEntity>()
        };

        return View(searchModel);
    }

HTML:

            <div class="demo-section k-content">
                @(Html.Kendo().MultiSelectFor(x => x.CMC)
                      .DataSource(source =>
                      {
                          source.Read(read =>
                          {
                              read.Action("GetCMC", "Search");
                          })
                          .ServerFiltering(true);
                      })
                      .ValuePrimitive(true)
                      .DataTextField("Name")
                      .DataValueField("UnitId")
                      .Filter(FilterType.Contains)
                      .Placeholder("Välj ett eller flera CMC...")
                )
            </div>

返回控制器以获取列表:

    public JsonResult GetCMC([DataSourceRequest] DataSourceRequest request)
    {
        RetreiveInformation ri = new RetreiveInformation();
        List<CMCEntity> lce = ri.FetchCMCInformation();
        return Json(lce, JsonRequestBehavior.AllowGet);
    }

CMCEntity看起来像这样:

public class CMCEntity
{
    public string Name { get; set; }
    public int UnitID { get; set; }
}

SearchABR(部分)看起来像这样:

public class SearchABR
{
    public List<CMCEntity> CMC { get; set; }
    public bool OnlyUnmatched { get; set; }
    public bool ExactMatch { get; set; }
}

仍然无法提交。

1 个答案:

答案 0 :(得分:0)

我的问题与MultiSelect或MVC编码无关。实际问题是

@using(Html.BeginForm...

你可以看到这个标签位于一个非法的表格内。 因此,当我将表格开始之外的使用开始移动到表格末尾之外时,它的工作结束了。