Передача ViewModel в контроллер Web API - PullRequest
0 голосов
/ 31 декабря 2018

Допустим, у меня есть два проекта в моем решении.Один для внешнего интерфейса.Еще один - это конец.В моем внешнем проекте, который построен с использованием веб-приложения MVC, у меня есть эта 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 голосов
/ 31 декабря 2018

Как сказал Шри Харша, у вас должен быть свой класс viewmodel в обоих решениях.

Альтернативно, чтобы уменьшить дублирование, вы можете иметь отдельную библиотеку классов исключительно для определений вашей модели и ссылаться на этот класс в обоих проектах..

0 голосов
/ 31 декабря 2018

Вы можете просто получить объект в своем API в бэк-энде, что-то вроде

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

Это будет ссылаться на ChangePinForm из отдельной библиотеки (я предлагаю использовать .net стандарт 2.0), таквы можете ссылаться как на ядро ​​.net, так и на .net framework

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...