0

コンテンツのコントローラーからドロップダウン選択をロードする剣道ポップアップ ウィンドウを作成しました。また、選択したインデックスの ID を取得してコントローラーに渡し、選択に基づいて変更される可能性のあるテキスト ボックスを含む部分ビューを返す変更イベントを追加したため、テキスト ボックスの作成は動的である必要があります。Html.Partial(_myPartialView) を追加しようとしましたが、結果がレンダリングされません。私は何を間違っていますか?

@(Html.Kendo().Window()
  .Name("userSetupWindow")
  .AppendTo("#useAcct")
  .Width(600)
  .Height(600)
  .Scrollable(false)
  .Modal(true)
  .Title("New Setup")
  .Actions(actions => actions.Refresh().Close())
  .Draggable()
  .Content("<section id='CreateLink' class = 'saveNewDialog-screen'>" +
           "<div class='saveNewLinkDialog'  style='border: none;' >" +
           "<div style='border: none;'>" +
        "<table>" +
               "<tr style='height: 30px;'>" +
                 "<td style='width: 30%; vertical-align: top;'>" +
                  "<div id='divAccounts' class ='createNew'> " +
                  "<label id='lbList' for='createNew' class='CreateNew-Label'>Select New</label>&nbsp;" +
                   Html.Kendo().DropDownList()
                  .Name("userList")
                  .DataSource(source => source.Read(read => read.Action("GetUsers", "UserAcctMgmt")
                  .Data("getSelectedId")
                  .Type(HttpVerbs.Post)))
                  .DataTextField("UserName")
                  .DataValueField("Id")
                  .Value("Id")
                  .SelectedIndex(0)
                  .Events(events => events.DataBound("onDropDownDataBound"))
                  .Events(events => events.Change("onSelect")) +
                  "</div>" +
                  "</td>" +
                  "</tr>" +
                  "<tr style='height: 30px;'>" +
                  "<td>&nbsp;</td>" +
                  "<td>" +
                  "<div id='divButtons' class='createNew-buttonContainer'>" +
                        "<button id='createNewLink-cancel' class='k-button saveNewButtons' >Cancel</button>&nbsp;" +
                        "<button id='createNewLink-save' class='k-button saveNewButtons'>Save</button>" +
                  "</div>" +
                  "</td>" +
                  "</tr>" +
                  "<tr style='height: 80px;>" +
                  "<td>" +
                  "<div id='div-textboxes'>" +
                Html.Partial(_dynamicPartialView)
                  "</div>" +
                  "</td>" +
                  "</tr>" +
          "</table>" +
                "</div>" +
                "</div>" +
                "</section>'"
  ).Events(events => events.Close("onPopupClose"))

コントローラーで:

 [HttpPost]
    public ActionResult GetUserFields(string Id)
    {
        if (!string.IsNullOrWhiteSpace(Id))
        {
            var fields = GetuserFields(int.Parse(Id));

            var model = new FieldModel
            {
                Fields = fields 
            };

            return PartialView("_dynamicPartialView", model);
        }

        return null;
}

Jquery が機能し、部分ビューに移動します

    function onSelect(e) {
        e.preventDefault();
        var selectedId = this.dataItem(e.item).id;

        $.ajax({
            url: "@Url.Action("GetUserFields", "UserModel")",
            type: 'POST',
            cache: false,
            data: JSON.stringify({ Id: selectedId }),
            contentType: "application/json; charset=utf-8",
            dataType: "json"
        });
    }

これが部分ビューです (_dynamicPartialView)

@model Models.UserFieldModel
@using Kendo.Mvc.UI

@if (Model != null)
{
foreach (var item in Model.UserFields)
{
<p>@item.FieldName</p>

if (item.FieldType.ToString().ToUpper() == "TEXTBOX")
{
    if (item.IsCaseSensitiveField)
    {
        @(Html.Kendo().TextBox()
                .Name("caseSensitive")
        )
     }
    else
    {
        @(Html.Kendo().TextBox()
                .Name("textInput")
        )
    }
   }
 }
}
4

1 に答える 1