0
私はView
を持っています。これはHTMLを動的にレンダリングします。それはこのように見て終わる:POSTされたフォームフィールドの複雑な配列をループする
<form asp-controller="Home" asp-action="Save">
<!-- Location widget class -->
<input name="widgets[0].Name" />
<input name="widgets[0].Type" value="Location" />
<input name="widgets[0].Location" />
<!-- Rating widget class -->
<input name="widgets[1].Name" />
<input name="widgets[1].Type" value="Rating" />
<input name="widgets[1].Rating" />
<input name="widgets[1].Remark" />
<button type="submit">Submit</button>
</form>
各「ウィジェット」のように、別のクラスで定義されています (poperties Name
とType
が親Widget
クラスで定義されています)
public class Location : Widget
{
public string Location {get;set;}
}
public class Rating : Widget
{
public string Rating {get;set;}
public string Remark {get;set;}
}
私が持っている問題は、POST
このフォームを私のコントローラに戻さなければならないということです。そこでは私はこのような何かをできるようにしたい:私は単にHttpContext.Request
オブジェクトからそのような特性を読み出すことができないように思え
public IActionResult Save()
{
var req = HttpContext.Request;
foreach(var widget in req.widgets)
{
if(widget.Type == "Location") {
...
}
else if(widget.Type == "Rating") {
...
}
// etc.
}
}
。
これを行う方法はありますか?
おそらくカスタムモデルバインダーを使用しています。モデル結合多型を調べる – Mardoxx