C# 加载编辑页面时未设置下拉列表,但已设置视图模型的其余属性

C# 加载编辑页面时未设置下拉列表,但已设置视图模型的其余属性,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我的数据库中有两个表,分别是Vendors和VendorPriceBreaks: Vendors ----------------- VendorID (PK) Name VendorPriceBreaks ----------------- VendorPriceBreakID (PK) VendorID (FK) Price PaymentTypeID (FK) 我有一个单一的查看页面,可以同时添加供应商和供应商PriceBreaks 以下是我的VendorsViewModel: pub

我的数据库中有两个表,分别是Vendors和VendorPriceBreaks:

Vendors
-----------------
VendorID (PK)
Name

VendorPriceBreaks
-----------------
VendorPriceBreakID (PK)
VendorID (FK)
Price
PaymentTypeID (FK)
我有一个单一的查看页面,可以同时添加供应商和供应商PriceBreaks

以下是我的VendorsViewModel:

public class VendorsViewModel
{
    [HiddenInput(DisplayValue = false)]
    public int VendorId { get; set; }

    public string Name { get; set; }

    public IEnumerable<VendorPriceBreaksViewModel> VendorPriceBreaks { get; set; }
}
public class VendorPriceBreaksViewModel
{
    [HiddenInput(DisplayValue = false)]
    public int VendorPriceBreakId { get; set; }

    public double? Price { get; set; }
    public int? PaymentTypeId { get; set; }

    public IEnumerable<PaymentType> PaymentTypes { get; set; }
}
公共类供应商视图模型
{
[HiddenInput(DisplayValue=false)]
public int VendorId{get;set;}
公共字符串名称{get;set;}
公共IEnumerable VendorPriceBreaks{get;set;}
}
这是我的供应商PriceBreaksviewmodel:

public class VendorsViewModel
{
    [HiddenInput(DisplayValue = false)]
    public int VendorId { get; set; }

    public string Name { get; set; }

    public IEnumerable<VendorPriceBreaksViewModel> VendorPriceBreaks { get; set; }
}
public class VendorPriceBreaksViewModel
{
    [HiddenInput(DisplayValue = false)]
    public int VendorPriceBreakId { get; set; }

    public double? Price { get; set; }
    public int? PaymentTypeId { get; set; }

    public IEnumerable<PaymentType> PaymentTypes { get; set; }
}
公共类供应商PriceBreaksviewModel
{
[HiddenInput(DisplayValue=false)]
公共整数VendorPriceBreakId{get;set;}
公共双价{get;set;}
public int?PaymentTypeId{get;set;}
公共IEnumerable PaymentTypes{get;set;}
}
以下是供应商的查看页面:

<%: Html.TextBoxFor(m => m.Name)%>

<table id="dynamic-rows" cellpadding="0" cellspacing="0">
<% foreach (var item in Model.VendorPriceBreaks)
    Html.RenderPartial("VendorPriceBreakRow", item);
%>
</table>
m.Name)%%>
这是我的控制:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CopyCraft.WebUI.Areas.Admin.Models.VendorPriceBreaksViewModel>" %>

<tr class="dynamic-row">
    <% using(Html.BeginCollectionItem("vendorPriceBreaks")) { %>
        <td>$<%= Html.TextBoxFor(m => m.Price) %></td>
        <td><%= Html.DropDownListFor(m => m.PaymentTypeId, new SelectList(Model.PaymentTypes, "PaymentTypeID", "Name"), "- Select a Payment Type -")%></td>
    <% } %>
</tr>

$m.Price)%>
m、 PaymentTypeId,新建选择列表(Model.PaymentTypes,“PaymentTypeId”,“Name”),“-选择一种付款类型-”)%>
当我编辑一个供应商并加载价格分解时,会设置价格,但不会在下拉列表中设置PaymentType值

以下是编辑供应商时的功能:

public ActionResult Edit(int id)
{
    var vendor = _adminRepository.GetVendor(id);

    List<VendorPriceBreaksViewModel> priceBreakssViewModels = new List<VendorPriceBreaksViewModel>();
    foreach (VendorPriceBreak priceBreak in vendor.VendorPriceBreaks)
    {
        priceBreaksViewModels.Add(new VendorPriceBreaksViewModel
            {
                Price = sheetPrice.Price,
                PaperUnitTypeId = sheetPrice.PaperUnitTypeID,
                PaperUnitTypes = _adminRepository.GetAllPaperUnitTypes()
            }
        );
    }

    var viewModel = new VendorsViewModel
    {
        VendorId = vendor.VendorID,
        Name = vendor.Name,
        VendorPriceBreakSheetPrices = sheetPricesViewModels
    };

    return View(viewModel);
}
public ActionResult编辑(int-id)
{
var vendor=\u adminRepository.GetVendor(id);
List priceBreakssViewModels=新列表();
foreach(卖方价格下跌卖方价格下跌。卖方价格下跌)
{
priceBreaksViewModels.Add(新供应商Pricebreaksviewmodel
{
价格=单张价格。价格,
PaperUnitTypeId=sheetPrice.PaperUnitTypeId,
PaperUnitTypes=\u adminRepository.GetAllPaperUnitTypes()
}
);
}
var viewModel=新供应商viewModel
{
VendorId=vendor.VendorId,
Name=vendor.Name,
VendorPriceBreakSheetPrices=图纸价格查看模型
};
返回视图(viewModel);
}
因此,正在加载下拉列表的数据,但未设置选定的值。但是价格值是在文本框中设置的


我不确定发生了什么。

尝试使用以下代码:

<%= Html.DropDownListFor(m => m.PaymentTypeId, 
    new SelectList(Model.PaymentTypes, "PaymentTypeID", "Name", Model.PaymentTypeId), 
    "- Select a Payment Type -")%>
m.PaymentTypeId,
新的选择列表(Model.PaymentTypes、“PaymentTypeID”、“Name”、Model.PaymentTypeID),
“-选择付款类型-”)%>
这里有更详细的分析-。

就是这样:)感谢您花时间查看我的所有代码。