4

KENDO UI ドロップダウンを使用しているアプリケーションを作成しようとしています。問題は、値を自分のビューからデータベースに更新したいということです。ドロップダウンで任意の値を選択すると、必要なデータベースの更新のために、それに関連付けられた ID がコントローラーに渡される必要があります。ただし、ここでは、ドロップダウン リストの任意の選択の ID が "null" を値として controller に渡します。

私の見解

@using Kendo.Mvc.UI
@model ExamplekendoDropdown.Models.FacilityGroup

@{
    ViewBag.Title = "FacilityGroup";
}

<h2>FacilityGroup</h2>

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

    <fieldset>
        <legend>FacilityGroup</legend>

        <div id="RegionName"  class="editor-label">
            @Html.LabelFor(model => model.RegionId)
        </div>
        <div class="editor-field">
           @* @Html.EditorFor(model => model.RegionName)*@
           @(Html.Kendo().DropDownList()
          .Name("Region")
          .DataTextField("RegionName")
          .DataValueField("RegionId")
          .DataSource(source =>
          {
              source.Read(read =>
              {
                  read.Action("GetRegion", "Fill");
              });

          })
    )
            @Html.ValidationMessageFor(model => model.RegionId)
        </div>
     <div id="Rest">
@*<form method="post" action='@Url.Action("Submit")' style="width:45%">
    <div>
        @(Html.Kendo().Upload()
            .Name("files")
        )
        <p>
            <input type="submit" value="Submit" class="k-button" />
        </p>
    </div>
</form>*@

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

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

        <div class="editor-label">
            @Html.LabelFor(model => model.CreationDate)
        </div>
        <div class="editor-field">
          @*  @Html.EditorFor(model => model.CreationDate)*@
          @(Html.Kendo().DatePicker()
              .Name("datepicker")
              .Value("17/08/2011")
              .HtmlAttributes(new { style = "width:150px" })
        )
            @Html.ValidationMessageFor(model => model.CreationDate)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
        </div>

    </fieldset>
}
        <div>
        @Html.ActionLink("See the List", "List")
        </div>
<div>
    @Html.ActionLink("Back to List", "About")
</div>
<script type="text/javascript">
    $(document).ready(function () {

        $("#RegionName").click(function () {
            $("#Rest").show();
        });
    });
</script>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

コントローラー:-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ExamplekendoDropdown.Models;

namespace ExamplekendoDropdown.Controllers
{
    public class FacilityGroupController : Controller
    {
        //
        // GET: /FacilityGroup/

        public ActionResult FacilityGroup()
        {
            return View();
        }
        [HttpPost]
        public ActionResult FacilityGroup(FacilityGroup objadd)
        {
            AMIEntities1 obj1 = new AMIEntities1();
            Facility objtbl = new Facility();

                objtbl.RegionId = Convert.ToInt16(objadd.RegionId);
                objtbl.FaclityGroupName = objadd.FaclityGroupName.ToString();
                objtbl.Status = objadd.status;
                objtbl.CreationDate = objadd.CreationDate;

                obj1.AddToFacilities(objtbl);
                obj1.SaveChanges();
                obj1.AcceptAllChanges();


            return View();
        }
    }
}

よろしくお願いします!!

4

5 に答える 5

3

DropDownListFor() を使用し、.Name がプロパティの名前と一致することを確認することをお勧めします。あなたの場合:

 @(Html.Kendo().DropDownListFor(model => model.RegionId)
      .Name("RegionId")
      .DataTextField("RegionName")
      .DataValueField("RegionId")
      .DataSource(source =>
      {
          source.Read(read =>
          {
              read.Action("GetRegion", "Fill");
          });
      })
  )
于 2012-09-13T19:49:49.360 に答える
0

値を取得するには、次の 2 つの方法があります。

Way1 : kendo ドロップダウンに .Value( model => model.FieldName) を追加すると、値が自動的にバインドされます。

Way2 : コントローラーに移動します。

public ActionResult Create(FromCollection collection)
{
    var id = collection["ComboName"]; // Here you can get the selected value

    return View();
}
于 2013-07-18T12:29:30.687 に答える