有没有办法可以称之为ASP.Net' deserializer'手动
我会解释我的情况。我有一个抽象的控制器类,我想添加一个抽象方法。继承抽象控制器的每个控制器都将覆盖该方法,并且在正文中将使用POST数据创建特定模型。
因为每个控制器都会使用数据来创建不同的模型,所以我无法使用自动模型绑定器。
所以我基本上想做像
这样的事情public abstract class abstractController : Controller
{
public JsonResult abstract mustOverrideMethod();
...
}
public class specificController : abstractController
{
public override JsonResult mustOverrideMethod()
{
var postData = Request.Form;
// Convert postData into a specific Model
...
}
}
答案 0 :(得分:1)
您是否尝试过使用通用AbstractController
类?:
public abstract class AbstractController<TModelType> : Controller
{
public abstract JsonResult MustOverrideMethod(TModelType item);
...
}
public class SpecificController : AbstractController<MyModelType>
{
[HttpPost]
public override JsonResult MustOverrideMethod(MyModelType item)
{
// The ModelBinder should bind the form input to the item parameter in this method
}
}
MyModelType
是你试图在方法中发布的任何类?
希望这会有所帮助:)
答案 1 :(得分:0)
你可以尝试这样的事情。
string age = Request.Form["age"];
string gender = Request.Form["gender"];
记住age
和gender
是输入字段的名称属性。
答案 2 :(得分:0)
如果我理解得很好,你就不需要这样做。如果您正在使用MVC,则可以将参数传递给您的操作方法。像这样:
[HttpPost]
public JsonResult ActionYouNeed(YourModel model)
{
// Do what you need
}
答案 3 :(得分:0)
嗨,你可以试试这个。
public class specificController : abstractController
{
[HttpPost]
public override JsonResult mustOverrideMethod([FromBody]YourDataModel yourDataModel)
{
//You can now use yourDataModel variable here.
youDataModel.DoAnythingYouLike etc...
}
}
希望这会有所帮助..