I have a form that shows some polymorph data. It looks something like this:
@model MyObject
@using (Html.BeginForm())
{
@Html.EditorFor(model => model.Name, new {htmlAttributes = new {@class = "form-control"}})
@
{
switch (Model.ObjectDetails)
{
case Foo _:
@Html.EditorFor(item => ((Foo) item.ItemDetails).FooProp)
case Bar _:
@Html.EditorFor(item => ((Bar) item.ItemDetails).BarProp)
}
}
}
The underlying models looks something like this:
interface IDetails { ... }
class Foo : IDetails{
string FooProp;
}
class Bar: IDetails{
string BarProp;
}
class MyObject{
string Name;
IDetails ObjectDetails;
}
I then edit the model in some ways and afterwards when submitting it I send it to a method similar to that one:
[HttpPost("/Edit/{id}")]
public IActionResult Edit(MyObject item)
{
SaveToDb(item);
return Redirect("/Index");
}
But when I recieve it in the upper Edit
-method then item.ObjectDetails
is always null
. How can I keep underlying polymorph data when sending the edited data back to the server???
question from:
https://stackoverflow.com/questions/65952346/recieve-object-with-polmorph-subobjects-in-asp-net-mvc 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…