Frage

Ich habe zwei Klassen, Mehrwertsteuer und Produkt. Produkt hat eine Eigenschaft von IVAT. Ich versuche, Editor -Vorlagen in MVC zu verwenden, um beim Erstellen/Bearbeiten eines Produkts eine Dropdown -Liste aller Mehrwertsteuerobjekte anzuzeigen. Für das liebe Leben von mir kann ich das nicht zum Laufen bringen.

Ich habe den folgenden Code, in dem die Dropdown -Adresse angezeigt wird, die Mehrwertsteuer für das Produkt nicht festgelegt wird, wenn das Formular eingereicht wird.

Regler:

IList<IVatRate> vatRates = SqlDataRepository.VatRates.Data.GetAllResults();
ViewBag.VatRates = new SelectList(vatRates, "Id", "Description");

Add.cshtml

@Html.EditorFor(model => model.VatRate.Id, "VatSelector", (SelectList)ViewBag.VatRates)

Vatselector.cshtml

@model SelectList
@Html.DropDownList(
        String.Empty /* */,
            (SelectList)ViewBag.Suppliers, 
        Model
    )

Ich wäre dankbar, wenn jemand etwas Licht auf diese oder sogar auf ein gutes Beispiel im Internet hinweisen kann ... Ich bin jetzt seit einigen Tagen dabei.

War es hilfreich?

Lösung

Ich würde stark typisierte Ansichten verwenden und Modelle anzeigen, da dies die Dinge so viel einfacher macht als auszusuchen.

Beginnen Sie also mit einem Ansichtsmodell:

public class VatRateViewModel
{
    public string SelectedVatRateId { get; set; }
    public IEnumerable<IVatRate> Rates { get; set; }
}

Dann ein Controller:

public class HomeController: Controller
{
    public ActionResult Index()
    {
        var model = new VatRateViewModel
        {
            Rates = SqlDataRepository.VatRates.Data.GetAllResults()
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(VatRateViewModel model)
    {
        // model.SelectedVatRateId will contain the selected vat rate id
        ...
    }
}

Aussicht:

@model VatRateViewModel
@using (Html.BeginForm())
{
    @Html.DropDownListFor(
        x => x.SelectedVatRateId,
        new SelectList(Model.Rates, "Id", "Description")
    )
    <input type="submit" value="OK" />
}

Und wenn Sie die Editor -Vorlage für das VatRateViewModel verwenden möchten, können Sie einen in definieren ~/Views/Shared/EditorTemplates/VatRateViewModel.cshtml:

@model VatRateViewModel
@Html.DropDownListFor(
    x => x.SelectedVatRateId,
    new SelectList(Model.Rates, "Id", "Description")
)

Und dann, wann immer Sie eine Eigenschaft vom Typ haben VatRateViewModel Sie könnten einfach:

@Html.EditorFor(x => x.SomePropertyOfTypeVatRateViewModel)

Dies würde die entsprechende Editor -Vorlage machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top