微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – ASP.Net Html.DropDownList未选择的元素

我有一个使用ASP.Net MVC Beta 5的网站,我刚刚升级到ASP.Net MVC 1.0.我在下拉列表中遇到了所选项目的问题.

跟随的人有一个类似的问题(Html.DropDownList in ASP.NET MVC RC (refresh) not pre-selecting item),但我没有答案(除了它可能是一个错误)

我的控制器方法如下所示:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult View(Guid id)
{
    IntegrationLogic logic = new IntegrationLogic(new IntegrationLinq());
    CompanyLogic companyLogic = new CompanyLogic(new CompanyLinq());
    IntegrationContainer container = new IntegrationContainer();

    container.sources = logic.GetImportSource(id);
    container.Companies = companyLogic.GetCompanies(); // Returns a IList<company>
    container.sourceActions = logic.GetAllSourceActions(); // Returns an IList<SourceAction>
    container.SinkActions = logic.GetAllSinkActions();
    container.SuccessActions = logic.GetAllSuccessActions();
    container.FailureActions = logic.GetAllFailureActions();
    container.Actions = logic.GetAllActions();
    container.Watchers = logic.GetAllWatcherActions();
    container.ChainActions = logic.GetAllChainActions();

    return View("View",container);
 }

该视图是对模型的强类型如下

public partial class View : ViewPage<IntegrationContainer> {}

视图模板中的问题区域是:

<label for="Companies">Company: </label><%=Html.DropDownList("Companies",new SelectList(ViewData.Model.Companies,"id","name",item.CompanyID))%>

我正在创建一个下拉列表,所选项目从未真正被选中 – 这就是问题. “item.CompanyID”是一个Guid,“id”是Guid,“name”是在IList中提供的公司对象中的一个字符串,该对象被保存在ViewData.Model.Companies实例中.

这实际上是一个错误 – 我发现很难理解为什么这仍然存在于ASP.Net MVC …如果这是我已经完成,我将是完全幸福的.

无论如何,建议的工作是什么?

谢谢

解决方法

事实证明,如果您通过Html.DropDownList控件的名称与收集对象名称相同,则会导致ASP.Net MVC出现问题.

所以如果我更改以下代码

<label for="Companies">Company: </label><%=Html.DropDownList("Companies",item.CompanyID))%>

至:

<label for="Companies">Company: </label><%=Html.DropDownList("company",item.CompanyID))%>

现在所有的工作.这是因为模型上的收集名称是Model.Companies …. bonkers …还注意到,将控制名称从“公司”更改为“公司”的情况也不起作用(这使得感觉我想)

我可以改变模型,但是大多数是使用Linq-to-sql构建的,我认为改变Html元素的名称是比较容易的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐