DropdownList用于不从下拉菜单中选择值

时间:2019-03-04 06:02:01

标签: c# asp.net-mvc

我已经完成了所有与此相关的查询,但是没有找到解决方法,这是控制器  不知道我要去哪里错了

string path = LibConf.dllAppSetting("graphcsvfiles");
System.IO.DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] files  = d.GetFiles("*.csv");//Directory.GetFiles(path).Where(s => s.EndsWith("*.csv"));
IEnumerable<SelectListItem> selectLists = files.Select(x => new SelectListItem { Text = x.Name, Value = x.FullName });

MyTestModel m = new MyTestModel;
m.filenames = selectLists;
return View(m);

这是模型

[DisplayName("File")]
public string File { get; set; }
public IEnumerable<SelectListItem> filenames {get; set;}

查看:

 <td>
    @Html.LabelFor(m => m.File)
    @Html.DropDownListFor(m => m.File, new SelectList(Model.filenames, "Text", "Value"), "-select type-", new { @class = "css-class", @style = "margin-right:4px; width:150px;height:28px" })
  </td>

3 个答案:

答案 0 :(得分:0)

此代码没有错。 确保将模型导入视图

http://iacts.org/members/Jc
http://iacts.org/members/Jc2
http://iacts.org/members/Ramesh-test
http://iacts.org/members/Raj
http://iacts.org/members/Arvind
http://iacts.org/members/Nhf
http://iacts.org/members/Man
http://iacts.org/members/Srujan
http://iacts.org/members/Vikas
http://iacts.org/members/Manohar
http://iacts.org/members/Sanjeeva Rao
http://iacts.org/members/Atul Kumar Gupta
http://iacts.org/members/Charlesmundwp
http://iacts.org/members/Amjad M
http://iacts.org/members/Dr Mrithyunjaya V
http://iacts.org/members/Siddharth

答案 1 :(得分:0)

所有解决方法之后,我观察到@ Html.DropDownListFor在“ td”中不能正常工作。 保留在“ td”之外的相同代码正常工作。

答案 2 :(得分:0)

下拉列表不选择值的主要原因是因为您从未告诉过应选择什么值:

MyTestModel m = new MyTestModel();
m.FileNames = selectLists;

您从未为m.File分配任何值,在这种情况下,这是下拉菜单的选定值。因此,下拉列表将仅默认为您的选项标签。

您需要这样做:

MyTestModel vm = new MyTestModel
{
    File = "KEY_VALUE_THAT_IS_ON_THE_LIST",
    FileNames = selectLists
};

return View(vm);

我还想更正您的2种编码风格/问题,因为您对MVC相当陌生:

1。 @Html.DropDownListFor<td>内部不起作用?

不。下拉/选择是表单元格内的有效元素。请参见下面的屏幕截图。

enter image description here

2。您的视图模型已经包含一个选择列表

您正在为视图模型构造一个IEnumerable<SelectListItem>,并将其传递到视图上的SelectList中以呈现为下拉列表。 IEnumerable<SelectListItem> the SelectList!您无需构造另一个,而将SelectListItem的列表再次传递给它。

相反,您可以这样做:

@Html.LabelFor(x => x.File)
@Html.DropDownListFor(x => x.File, Model.FileNames, "- select type -" ... })