【问题标题】:Pass Query String parameter to JsonResult action in MVC controller将查询字符串参数传递给 MVC 控制器中的 JsonResult 操作
【发布时间】:2019-07-02 21:32:16
【问题描述】:

我试图将查询字符串参数传递给控制器​​中的 JsonResult 操作。我不断收到以下错误:

值不能为空。 参数名称:字符串

我需要来自这个 url 的 task_id:

TaskIn?task_id=33

在我看来,我已经尝试过(失败并出现同样的错误):

 @model TaskingSystem.Models.AcceptTasksViewModel

 @{string task_id = @Request.QueryString["task_id"];}
 @Html.HiddenFor(m => m.task_id)

在控制器中:

  public JsonResult TasksExist(string email, string task_id)
    {

        int tasks_id = int.Parse("task_id");
        return Json(db.Tasks_Validate.Any(e => e.Email == email && e.task_id == tasks_id), JsonRequestBehavior.AllowGet);

    }

我的模特:

 public class AcceptTasksViewModel{

    [Required]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Email:")]
    //Using Remote validation attribute   
    [Remote("TasksExist", "Task_Results",  ErrorMessage = "Email does not exists in database. Please try a different email address.")]
    public string email { get; set; }

    public int task_id { get; set; } 

    public string FirstName { get; set; }

    public string LastName { get; set; }
}

我也尝试过使用它直接进入动作,但它仍然失败。

  int tasks_id = int.Parse(Request.Params["task_id"]);

【问题讨论】:

  • 为什么不把类型改成int这里:public JsonResult TasksExist(string email, string task_id)

标签: asp.net-mvc


【解决方案1】:

要将task_id 和email 一起传递给您的TasksExist(string email, string task_id) 方法,您必须在Remote 属性的AdditionalFields 属性中提及task_id,如下所示:

[Remote("TasksExist", "Task_Results",AdditionalFields = "task_id"  ErrorMessage = "Email does not exists in database. Please try a different email address.")]
public string email { get; set; }

【讨论】:

  • 谢谢!这就是问题所在。我不知道我必须添加它。
  • 欢迎您!很高兴听到它对您有所帮助。
猜你喜欢
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多