コンテンツのコントローラーからドロップダウン選択をロードする剣道ポップアップ ウィンドウを作成しました。また、選択したインデックスの 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> " +
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> </td>" +
"<td>" +
"<div id='divButtons' class='createNew-buttonContainer'>" +
"<button id='createNewLink-cancel' class='k-button saveNewButtons' >Cancel</button> " +
"<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")
)
}
}
}
}