在MVC中发布表单发布问题

时间:2017-05-29 07:15:30

标签: asp.net-mvc model http-post

  

模型结构

UserModel.cs

public class PatientViewModel
{
    public int? inPatientId { get; set; }
    public string stFirstName { get; set; }
}

TaskModel.cs

public class TaskViewModel: PatientViewModel
{
    public int? inTaskId { get; set; }
    public int? inPatientid { get; set; }
    public string stName {get;set;}
}
  

UserTask.cshtml

@model Web.Areas.Tasks.Models.TaskViewModel
  

UserController.cs

[HttpPost]
public ActionResult saveTask(TaskViewModel loTaskViewModel)
{
    return View("~/Areas/Tasks/Views/Tasks/UserTask.cshtml", loTaskViewModel);
}

在将另一个模型类继承到主模型类时,无法发布此表单获取错误500 (Internal Server Error)。所以当我从TaskModel.cs类文件中删除这段代码: PatientViewModel时,表单就会成功发布。

但我希望将该模型继承到主模型并发布表单。

提前致谢。

1 个答案:

答案 0 :(得分:0)

得到了解决方案。问题出在模型属性声明 'inPatientId' & 'inPatientid' 中,它在模型类中都是相同的,但在不同情况下都是相同的。

  

将此更改为

UserModel.cs

public class PatientViewModel
{
    public int? inPatientId { get; set; }
    public string stFirstName { get; set; }
}

TaskModel.cs

public class TaskViewModel: PatientViewModel
{
    public int? inTaskId { get; set; }
    public int? inPatientid { get; set; }
    public string stName {get;set;}
}
  

UserModel.cs

public class PatientViewModel
{
    public int? inPatientId { get; set; }
    public string stFirstName { get; set; }
}

TaskModel.cs

public class TaskViewModel: PatientViewModel
{
    public int? inTaskId { get; set; }
    public int? inTaskPatientId { get; set; }
    public string stName {get;set;}
}