私はMVC5ビューで剣道コンボボックスを実装しており、モデル内の値に基づいてフィルタリングするようにしました。私は私のモデルから値を取得する必要があります。私は現在、私の部分的な見解では、その値をCountryCodeという隠しフィールドにバインドしています。スクリプトは私のメインビューです。隠しフィールドにアクセスしようとすると、定義されていないエラーメッセージが表示されます。モデルにはCountryCodeが確実に取り込まれています。図メインビューから部分ビューで隠し要素を取得できません
public ActionResult RequestStatus(int requestId, string projectName, string countryCode)
{
RequestStatusUpdateViewModel reqeustStatusUpdateViewModel = new RequestStatusUpdateViewModel();
reqeustStatusUpdateViewModel.RequestID = requestId;
reqeustStatusUpdateViewModel.ProjectName = projectName;
reqeustStatusUpdateViewModel.CountryCode = countryCode;
if (!ModelState.IsValid)
{
// return View("NewRequestView", Mapper.Map<RequestStatusViewModel>(newReqeustViewModel));
return null;
}
return View("_RequestStatusView", Mapper.Map<RequestStatusUpdateViewModel>(reqeustStatusUpdateViewModel));
}
RequestStatusViewModel
をロードコンボpublic ActionResult GetRequestStatus(string countryCode)
{
var response = requestRepository.GetRequestStatus(countryCode).AsQueryable().ProjectTo<RequestStatusViewModel>();
var jsonResult = Json(response, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;
}
コントローラメソッドを移入
@using System.Collections
@model CC.GRP.MCRequest.ViewModels.RequestStatusUpdateViewModel
@{
Layout = null;
}
<div class="k-popup-edit-form k-window-content k-content" >
<div class="k-edit-form-container">
@Html.HiddenFor(model => model.CountryCode)
<div class="editor-label">
@Html.LabelFor(model => model.RequestID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.RequestID, new { htmlAttributes = new { @readonly = "readonly" } })
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ProjectName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ProjectName, new { htmlAttributes = new { @readonly = "readonly" } })
</div>
<div class="editor-label">
@Html.LabelFor(model => model.RequestStatus)
</div>
<div class="editor-field">
@(Html.Kendo().ComboBoxFor(model => model.RequestStatusCode)
.HtmlAttributes(new { style = "width:100%" })
.DataTextField("Status")
.Placeholder("Select...")
.DataValueField("RequestStatusCode")
.AutoBind(false)
.Filter("contains")
.DataSource(dataSource => dataSource
.Read(read =>
{
read.Action("GetRequestStatus", "Request")
.Type(HttpVerbs.Post)
.Data("GetCountryCodeFilter");
}).ServerFiltering(true)
)
)
</div>
@Html.ValidationMessageFor(model => model.RequestStatusCode, "", new { @class = "text-danger" })
</div>
</div>
コントローラメソッドメインビューで
public class RequestStatusViewModel { public string RequestStatusCode { get; set; } public string Status { get; set; } public int DisplaySequenceNo { get; set; } }
スクリプト
function GetCountryCodeFilter() {
alert("Hello");
alert($('#CountryCode').val());
return { countryCode: $('#CountryCode').val() }
};