C# MVC отключить привязку имени метода контроллера к свойству действия модели - PullRequest
0 голосов
/ 17 февраля 2020

Проблема в том, что мой контроллер привязывает имя метода к свойству «Действие» моей модели, и, конечно, это вызывает ошибку в состоянии моей модели, потому что Имя метода - Строка , а мое Свойство действия - Объект . Я хочу, чтобы свойство Action было пустым, если оно отсутствует в моих формах данных.

Данные формы:

enter image description here

Состояние модели при обработке POST-запроса:

enter image description here

Действие моего контроллера:

[HttpPost]
    public ActionResult RouteRoleActionsSave(TskRouteRoleAction model,List<TskAction.Actions> RoleActions = null)
    {
        using (var context = new SmartDbContext())
        {
            if (ModelState.IsValid)
            {
               return Json("ok");
            }
            return Json(ModelState);
        }
    }

Моя модель:

[Table("TSK_ROUTE_ROLE_ACTIONS")]
public class TskRouteRoleAction
{
    [Key, Column("ROUTE_ID", Order = 0), ForeignKey("Route")]
    public decimal RouteId { get; set; }
    public TskRoute Route { get; set; }

    [Key, Column("ROLE_ID", TypeName = "numeric", Order = 1), ForeignKey("Role")]
    public TskRole.Roles? RoleId { get; set; }
    public TskRole Role { get; set; }

    [Key, Column("ACTION_ID", TypeName = "numeric", Order = 2), ForeignKey("Action")]
    public TskAction.Actions? ActionId { get; set; }
    public TskAction Action { get; set; }
}

1 Ответ

0 голосов
/ 17 февраля 2020

После изучения документации я заметил, что проблема вызвана тем, что мое сопоставление маршрутов использует имя параметра «Action», поэтому оно конфликтует со свойством Action моей модели:

enter image description here

Я исправил это, добавив префикс привязки в мою форму, чтобы больше не существовало конфликтующих параметров связывания:

enter image description here

...