【发布时间】:2015-04-16 11:07:57
【问题描述】:
我是 MVC.Net 和 razorviews 的新手。 我有一个包含卡片列表的模型。我想在视图内的下拉框中显示此列表。但我不被允许。从一个例子中,我找到了这段代码并进行了尝试:
构成列表的类:
public class CardType
{
public CardType(string cardTypeName)
{
this.CardTypeName = cardTypeName;
}
public string CardTypeName { get; set; }
}
型号:
public class MyCardsViewModel
{
public IEnumerable<PaymentCard> PaymentCards { get; set; }
public AddPaymentcard PaymentCardInformation { get; set; }
}
public class AddPaymentcard
{
public string CardTypeName { get; set; }
public IEnumerable<SelectListItem> CardTypeList
{
get
{
return _cardTypes.Select(x => new SelectListItem {Value = x.CardTypeName, Text = x.CardTypeName}).ToList();
}
}
public List<CardType> _cardTypes;
}
控制器方法:
// GET: /MyCards/
public ActionResult Index()
{
string userId = User.Identity.GetUserId();
MyCardsViewModel viewModel = new MyCardsViewModel();
var user = _userRepository.GetUser(userId);
viewModel.PaymentCards = user.PaymentCards; //Don't mind this, it is something else :)
var cardTypeList = _cardTypeRepository.GetCardTypes();
viewModel.PaymentCardInformation=new AddPaymentcard
{
_cardTypes = cardTypeList
};
return View(viewModel);
}
//Get: MyCards/AddPaymentcard
public ActionResult AddPaymentcard()
{
return View();
}
观看次数:
接收 MyCardsViewModel 并添加部分视图 AddPaymentcard.cshtml 的索引视图:
@model Kvittering.TaxiFinans.Web.Models.MyCardsViewModel
(...)
@Html.Partial("~/Views/MyCards/AddPaymentcard.cshtml", @Model.PaymentCardInformation );
添加支付卡视图:
@model Kvittering.TaxiFinans.Web.Models.AddPaymentcard
(...)
<div class="form-group">
@Html.LabelFor(m => m.CardTypeName, new { @class = "control-label col-md-2"})
<div class="col-md-offset-2 col-md-8">
@Html.DropDownListFor(m => m.CardTypeName, @Model.CardTypeList)
</div>
</div>
谁能帮我解决这个问题? :/
【问题讨论】:
-
它必须是
get { return new SelectList(_cardTypes, "CardTypeName", "CardTypeName"); }- 您需要同时指定Value和Text属性 -
你也可以签名
public SelectList CardTypeList {..},但无论如何属性应该是public SelectList CardTypeList { get; set; }并且控制器应该负责设置值(List<CardType> _cardTypes;不是必需的)
标签: c# asp.net-mvc asp.net-mvc-4 razor