Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SelectList不选择特定值_C#_Razor_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# SelectList不选择特定值

C# SelectList不选择特定值,c#,razor,asp.net-core,asp.net-core-mvc,C#,Razor,Asp.net Core,Asp.net Core Mvc,我的代码有问题。我使用SelectList功能选择了一个特定的值,但它似乎不起作用。这是我的密码: 控制器: Public IActionResult Index() { myList.loanFrequency = new SelectList(lstLoanFrequency, "Id", "Value", 4); } 查看: Public IActionResult Index() { myList.loanFrequency = new SelectList(lstLoan

我的代码有问题。我使用
SelectList
功能选择了一个特定的值,但它似乎不起作用。这是我的密码:

控制器:

Public IActionResult Index()
{
   myList.loanFrequency = new SelectList(lstLoanFrequency, "Id", "Value", 4);
}
查看:

Public IActionResult Index()
{
   myList.loanFrequency = new SelectList(lstLoanFrequency, "Id", "Value", 4);
}

贷款频率
注册此贷款后,您将被设置为每两周一次,因为您的工资主要在每月的每两周一天计算和扣除。

标记帮助者混淆

需要注意的是,
asp for
标记帮助程序的功能与一些旧的MVC HTML帮助程序非常相似,因为它将处理视图中特定属性的绑定。因此,您需要确保它指向表示贷款实例中存在的“频率Id”的任何属性

此实例中的
asp项
标记帮助器实际上不需要值,因为该值将由
asp为
帮助器自行设置。您只需要构建一个频率及其相应标识符的列表,然后将贷款对象的集合传递给您的视图,并让标记帮助器处理其余部分

示例

首先,让我们定义一些类作为示例,这些类可能是当前类的简化版本:

// This represents the frequency a loan would occur
public class LoanFrequency
{
    public int Id { get; set; }
    public string Value { get; set; }

    public LoanFrequency(int id, string value)
    {
        Id = id;
        Value = value;
    }
}

// This is a very basic example of a loan
public class Loan
{
    public string Name { get; set; }
    public int Frequency { get; set; }

    public Loan(string name, int frequency)
    {
        Name = name;
        Frequency = frequency;
    }
}
如果您只想使用它来设置使用另一个对象(即贷款)的属性,则不需要为频率设置特定的默认值。因此,您可以在控制器中定义
SelectList
,以及将传递给视图的一些值:

public IActionResult Index()
{
        // Example loan frequencies
        ViewBag.LoanFrequencies = new SelectList(new LoanFrequency[]
        {
            new LoanFrequency(1, "Weekly"),
            new LoanFrequency(2, "Biweekly"),
            new LoanFrequency(3, "Semimonthly"),
            new LoanFrequency(4, "Monthly"),
            new LoanFrequency(5, "Bimonthly"),
            new LoanFrequency(6, "Quaterly"),
            new LoanFrequency(7, "Semiannually"),
            new LoanFrequency(8, "Annually")
        }, "Id", "Value");

        // Example loans to bind
        var loans = new Loan[]
        {
            new Loan("Weekly Loan", 1),
            new Loan("Monthly Loan", 4),
            new Loan("Birthday Loan", 8)
        };

        return View(loans);
}
在您的视图中,您只需确保
asp for
属性指向
Loan
对象的频率相关属性,并且
asp项
属性指向您的频率集合:

@model YourExampleApplication.Models.Loan[]

<ul>
    @foreach (var loan in Model)
    {
        <li>
            @loan.Name
            <select asp-for="@loan.Frequency" asp-items="ViewBag.LoanFrequencies"></select>
        </li>
    }
</ul>
@model YourExampleApplication.Models.Loan[]
    @foreach(模型中的var贷款) {
  • @贷款名称
  • }
这将输出如下所示的内容:


请注意,每个
元素都将其选择正确地绑定到传入视图的每个贷款的频率属性的相应值。

对不起,我对使用asp.net编程有点陌生,您能给我一个示例代码吗?我仍在学习asp.net core。我添加了一个示例,希望能有所帮助。当您提交表单时,它不会绑定(您不能使用
foreach
循环-它会生成与模型无关的
name
属性-参考)您昨天已经被告知,您正在为asp.net MVC的旧版本使用标记。和用于旧的ASP.NET MVC webstack。如果您对ASP.NET Core有任何疑问,请使用和/或