Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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# 无法编辑SelectListItem的项目_C#_Asp.net Mvc_Asp.net Mvc 3_Selectlistitem - Fatal编程技术网

C# 无法编辑SelectListItem的项目

C# 无法编辑SelectListItem的项目,c#,asp.net-mvc,asp.net-mvc-3,selectlistitem,C#,Asp.net Mvc,Asp.net Mvc 3,Selectlistitem,我有一个这样的物体: public class AppointmentStatus { public int Id {get;set;} public string I18NKey {get;set;} } public static SelectList TranslateValue(SelectList list) { foreach (var tmp in list) { tmp.Text = I18n

我有一个这样的物体:

public class AppointmentStatus 
{
     public int Id {get;set;}
     public string I18NKey {get;set;}
}
public static SelectList TranslateValue(SelectList list)
    {
        foreach (var tmp in list)
        {
            tmp.Text = I18nHelper.Message(tmp.Text);
        }
        return list;
    }
I18NKey是翻译的一个键

在我的表格中,我使用选择列表创建了一个下拉列表:

Html.DropDownListFor(x=>x.Id, new SelectList(MyListOfStatus, "Id","I18NKey")
通过此操作,我将键的值检索为文本,我希望编辑每个SelectListItem中的属性文本

我用了这样的方法:

public class AppointmentStatus 
{
     public int Id {get;set;}
     public string I18NKey {get;set;}
}
public static SelectList TranslateValue(SelectList list)
    {
        foreach (var tmp in list)
        {
            tmp.Text = I18nHelper.Message(tmp.Text);
        }
        return list;
    }

但它什么也改变不了!文本属性仍然相同,为什么

您需要在下拉列表中更改绑定:

Html.DropDownListFor(x => x.Id, 
       TranslateValue(new SelectList(MyListOfStatus, "Id","I18NKey"))

还要检查您的
I18nHelper.Message
是否按预期工作。

我终于找到了解决方案:选择列表似乎基于它所需的IEnumerable。 每个SelectListItem的属性文本都是动态的,并且取决于IEnumerable的每个项目

我们需要更改IEnumerable,而不是SelectList

我最后做的是:

public class AppointmentStatus 
{
     public int Id {get;set;}
     public string I18NKey {get;set;}
     public string Translation {get;set;}
}

public static IEnumerable<AppointmentStatus> TranslateValue(IEnumerable<AppointmentStatus> list)
    {
        foreach (var tmp in list)
        {
            tmp.Translation = I18nHelper.Message(tmp.I18NKey);
        }
        return list;
    }

Html.DropDownListFor(x=>x.Id, new SelectList(HelperClass.TranslateValue(MyListOfStatus), "Id","Translation")
公共类任命状态
{
公共int Id{get;set;}
公共字符串I18NKey{get;set;}
公共字符串转换{get;set;}
}
公共静态IEnumerable TranslateValue(IEnumerable列表)
{
foreach(列表中的var tmp)
{
tmp.Translation=I18nHelper.Message(tmp.I18NKey);
}
退货清单;
}
DropDownListFor(x=>x.Id,新选择列表(HelperClass.TranslateValue(MyListOfStatus),“Id”,“Translation”)

希望它能对您有所帮助。

这是我尝试过的,是的,I18NHelper.Message就像一个符咒