将ViewModel传递给Web API控制器

时间:2018-12-31 10:43:24

标签: c# asp.net-mvc api

假设我的解决方案中有两个项目。一个用于前端。另一个是后端。在使用MVC Web应用程序构建的前端项目中,我具有此ViewModel。我的后端项目(Web API控制器)如何知道此ViewModel?以前,在前端和后端只有一个项目,我的代码如下。

public class ChangePinForm
{
    [Range(100000, 999999), Display(Name = "Enter Current Card Pin")]
    [DataType(DataType.Password)]
    public int OldCardPin { get; set; }

    [Range(100000, 999999), Display(Name = "Enter New Card Pin")]
    [DataType(DataType.Password)]
    public int NewCardPin { get; set; }

    [Range(100000, 999999), Display(Name = "Enter New Card Pin Again")]
    [DataType(DataType.Password)]
    public int ConfirmNewCardPin { get; set; }
}

    [HttpPost]
    public ActionResult ChangePin(ChangePinForm changePinForm)
    {
        selectedBankAccount = db.BankAccounts.Find(Session["userid"]);
        if (changePinForm.OldCardPin != selectedBankAccount.PinCode)
        {
            ViewBag.Error = "Please key in the correct current pin number.";
            return View();
        } else if (changePinForm.NewCardPin != changePinForm.ConfirmNewCardPin)
        {
            ViewBag.Error = "New card pin number and Confirm new card pin number do not match.";
            return View();
        } else
        {
            selectedBankAccount.PinCode = changePinForm.ConfirmNewCardPin;
            db.SaveChanges();
            return View("Done");
        }

    }

2 个答案:

答案 0 :(得分:1)

您可以简单地在后端的API中接收对象,例如

[HttpPost("changepin")]
public ActionResult ChangePin([FromBody] ChangePinForm changePinForm)

这将从另一个库中引用ChangePinForm(我建议使用.net standard 2.0),因此您都可以从.net core和.net框架中引用

答案 1 :(得分:1)

如斯里·哈莎(Sri Harsha)所说,在两个解决方案中都应该有viewmodel类。

或者,为减少重复,您可以为模型定义提供一个单独的类库,并在两个项目中都引用该类。