猿问

下拉列表在MVC3 Razor中设置选定的值

这是我的模型:


public class NewsCategoriesModel {

    public int NewsCategoriesID { get; set; }        

    public string NewsCategoriesName { get; set; }

}

我的控制器:


public ActionResult NewsEdit(int ID, dms_New dsn) {

    dsn = (from a in dc.dms_News where a.NewsID == ID select a).FirstOrDefault();

    var categories = (from b in dc.dms_NewsCategories select b).ToList();

    var selectedValue = dsn.NewsCategoriesID;

    SelectList ListCategories = new SelectList(categories, "NewsCategoriesID", "NewsCategoriesName",selectedValue);


    // ViewBag.NewsCategoriesID = new SelectList(categories as IEnumerable<dms_NewsCategory>, "NewsCategoriesID", "NewsCategoriesName", dsn.NewsCategoriesID);

    ViewBag.NewsCategoriesID = ListCategories;

    return View(dsn);

}

然后我的看法:


@Html.DropDownList("NewsCategoriesID", (SelectList)ViewBag.NewsCategoriesID)

当我运行时,DropDownList不会选择我设置的值。它总是在选择第一个选项。


Smart猫小萌
浏览 782回答 3
3回答

繁花如伊

以防万一有人提出这个问题,这是我的方法,请忘记存储库对象,我使用的是存储库模式,您可以使用对象上下文来检索实体。而且也不必关注我的实体名称,我的实体类型Action与MVC Action无关。控制器:ViewBag.ActionStatusId = new SelectList(repository.GetAll<ActionStatus>(), "ActionStatusId", "Name", myAction.ActionStatusId);请注意,SelectList构造函数的最后一个变量是所选值(对象selectedValue)。这是我的渲染视图:<div class="editor-label">&nbsp; &nbsp;@Html.LabelFor(model => model.ActionStatusId, "ActionStatus")</div><div class="editor-field">&nbsp; &nbsp;@Html.DropDownList("ActionStatusId")&nbsp; &nbsp;@Html.ValidationMessageFor(model => model.ActionStatusId)</div>&nbsp;我认为这很简单,希望对您有所帮助!:)

蝴蝶刀刀

我细化了下拉列表的形式,而不是使用@Html.DropDownList()。如果您必须在运行时使用剃须刀(而不是控制器)设置下拉列表的值,这将很有用:<select id="NewsCategoriesID" name="NewsCategoriesID">&nbsp; &nbsp; @foreach (SelectListItem option in ViewBag.NewsCategoriesID)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; <option value="@option.Value" @(option.Value == ViewBag.ValueToSet ? "selected='selected'" : "")>@option.Text</option>&nbsp; &nbsp; }</select>
随时随地看视频慕课网APP
我要回答