1
我有一個Kendo網格,每行都有一個自定義編輯按鈕。當用戶單擊編輯按鈕時,會打開一個模式窗口,用戶可以在其中編輯信息並保存更改。編輯器模板不選擇值正確值
我已經添加了一個編輯模板來顯示狀態縮寫的下拉列表。
StatesEditor.cshtml
@(Html.Kendo().DropDownList()
.Name("State")
.DataValueField("StateID")
.DataTextField("ShortName")
.BindTo((System.Collections.IEnumerable)ViewData["states"]))
這被在我的控制器填充之前,我打開我的模態窗口:
public ActionResult OpenEditor([DataSourceRequest] DataSourceRequest request, int? addressId)
{
var address = db.Address.Where(x => x.AddressId == addressId).FirstOrDefault();
// code where I convert the address to an AddressMetadata
// ...
// ...
ViewData["states"] = ACore.Methods.ViewDataPopulation.PopuldateStates();
return PartialView("~/Views/System/Addresses/AddressEditorPopup.cshtml", addr);
}
在我看來,我有
@Html.EditorFor(model => model.State)
,這是我的型號:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace ACore.Models
{
[MetadataType(typeof(AddressMetadata))]
public partial class Address
{
}
public class AddressMetadata
{
public int AddressID { get; set; }
public string Street1 { get; set; }
public string Street2 { get; set; }
public string City { get; set; }
[UIHint("StatesEditor")]
public State State { get; set; }
public string ZipCode { get; set; }
}
}
,這是我的美國模式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ACore.Models
{
public class State
{
public int Id { get; set; }
public string ShortName { get; set; }
}
}
的下拉列表被填充了國家的列表,但它設置爲「AK」,在列表中的第一個狀態。我將我的觀點傳遞給一個模型,其中狀態是一個ID爲41,短名稱爲「SC」的狀態模型。
如何讓我的下拉列表設置爲傳入的狀態?
更新:
我不知道這是否是這樣做的正確的方式,但是這是我的固定它。只需添加的SelectedIndex固定的問題,但我加入的DropDownList上面的代碼,所以我可以用在我沒有傳入ID的其他地方這個編輯器。
@model ACore.Models.State
@{
var modelId = 0;
}
@if (Model != null)
{
modelId = Model.Id - 1;
}
@(Html.Kendo().DropDownList()
.Name("State")
.DataValueField("StateID")
.DataTextField("ShortName")
.SelectedIndex(modelId)
.BindTo((System.Collections.IEnumerable)ViewData["states"])
)