ASP.NET MVC 3 @ Html.DropDownList для игнорирования selectedValue - PullRequest
2 голосов
/ 31 мая 2011

В моем проекте asp.net MVC 3 я хотел бы создать контакт, связанный с компанией.

Вы можете либо напрямую создать контакт ИЛИ , перейти к просмотру сведений о компании и добавить новый контакт, передавая companyId, чтобы указать эту компанию уже в раскрывающемся списке в форме создания контакта.

Проблема в том, что я не могу получить пропущенную компанию по умолчанию в раскрывающемся списке.

Global.asax

routes.MapRoute("contactCreate", "contact/toevoegen/{companyid}", new { action = "ContactCreate", controller = "Backend", companyid = UrlParameter.Optional });

Метод управления

public ActionResult ContactCreate(int? companyid)
{
    Contact contact = new Contact();

    ViewBag.StatusList = srep.getContactStatusses();

    ViewBag.CompanyId = companyid;

    return View(contact);
}

View

@model xxx.Models.Contact

...

        <div class="editor-label">
            @Html.LabelFor(model => model.bedrijf_id)
        </div>
        <div class="editor-field">
            @Html.DropDownListFor(model => model.bedrijf_id, new SelectList(ViewBag.Bedrijven, "bedrijf_id", "bedrijf_naam",ViewBag.CompanyId), "--Kies bedrijf--")
            @ViewBag.CompanyId
            @Html.ValidationMessageFor(model => model.bedrijf_id)
        </div>
...

@ViewBag.CompanyId имеет значение.

Есть идеи, почему не устанавливается выбранное значение?

1 Ответ

1 голос
/ 23 августа 2011

При выполнении «DropDownListFor» он будет пытаться сопоставить значение, переданное из модели, для выбранного значения.Так что в вашем примере он будет использовать "bedrijf_id" в качестве выбранного значения.Похоже, вы хотите, чтобы выбранное значение было чем-то за пределами вашей модели.

Из комментариев я думаю, что вам нужен просто DropDownList следующим образом:

@Html.DropDownList("DropDownList", new SelectList((ViewBag.Bedrijven, "bedrijf_id", "bedrijf_naam", ViewBag.CompanyId), "--Kies bedrijf--") 

Надеюсь, это поможет.

...