创建令牌以填写表单

时间:2013-12-20 19:29:42

标签: c# asp.net-mvc-4

我有一个表格来注册申请人的工作,但是填写表格的用户没有用户来验证他是否是有效的用户。

表单有一个参数,表明申请人正在寻找什么工作。

 //This is the controller action
 public ActionResult RegisterApplicant(int job_id)
 {
     var formModel = new FormModel(){
       job_id = job_id
     };
     return View(formModel);
 }

 ///This is the view
@model Jobs.Models.FormModel

 <div class="container">
 @using(Html.BeginForm("RegisterApplicant")){
    @Html.HiddenFor(model=>model.job_id)

   //Other Fields Here
   <input type="submit" value="Save">
 }
 </div>

是否有办法生成URL以及包含作业JOB_ID的标记 调用RegisterApplicant方法,允许未经过身份验证的用户填写 表格。

我想避免在访问该方法的URL中明确显示job_id。

我将使用该URL通过电子邮件将其发送给求职者。 感谢。

1 个答案:

答案 0 :(得分:1)

您可以为每个作业生成一个Guid并与作业ID相关联。

var job = new Job()
{
   job_id = <id>,
   token = Guid.NewGuid().ToString();
}

JobService.SaveJob(job);

然后,更改您的控制器以接收令牌并使用它找到该作业。

public ActionResult RegisterApplicant(string jobToken)
{
     var job = JobService.GetJobByToken(jobToken);

     var formModel = new FormModel(){
       job_id = job.job_id
     };

     return View(formModel);
}

** JobService只是一个假设的服务,因为我不知道你的实际代码是如何实现的。