手动将POST数据转换为模型

时间:2017-05-10 14:38:17

标签: c# asp.net

有没有办法可以称之为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
        ...
    }
 }

4 个答案:

答案 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"];

记住agegender是输入字段的名称属性。

答案 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...

        }
     }

希望这会有所帮助..