如何从控制器内部重定向到HTML页面?

时间:2019-06-13 14:42:36

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

用户收到一封带有链接的电子邮件,必须单击该链接才能验证其电子邮件地址。单击链接后,应将用户重定向到两个静态HTML页面之一,其中一个说“您已通过认证”,另一个说“链接已过期”

我尝试了一些选择。首先,我向我的控制器添加了一个Response.Redirect,并带有一个指向View的路径。我还尝试了在将Routes.MapPageRoute添加到RouteConfig文件的位置,并更改了重定向调用以尝试使用此名称,但这也不起作用。我在此示例中查看了该修复程序(Redirect to an html page inside Views Folder

这是我的代码尝试通过重定向访问HTML文件:

EmailCertification.UpdateDBEmailCertified(userName, int.Parse(memberNumber), certSentDT);

return Redirect("~/Views/EmailCertification/EmailCertified.html");`

我得到的错误是:

  

找不到/Views/EmailEmailCertification/EmailCertified.html的路径。我验证了拼写,并且路径都正确。

如果我更改了代码以在RoutesConfig中包含MapPageRoute,它仍然不起作用。

这是我的路线配置:

routes.MapPageRoute("HtmlPage", "EmailCertifiedURL", "~/Views/EmailCertification/EmailCertied.html");`

这是我的控制人:

return Redirect("EmailCertifiedURL");

这是我正在使用的控制器,它是一个HttpPost

public ActionResult EmailCertify(string userName, string memberNumber, string certSentDate)
        {
            DateTime certSentDT;

            long lngCertSent = long.Parse(certSentDate);

            certSentDT = new DateTime(lngCertSent);

            if (certSentDT < DateTime.Now.AddDays(-14))
                return Redirect("EmailOldURL");

            EmailCertification.UpdateDBEmailCertified(userName, int.Parse(memberNumber), certSentDT);
            return Redirect("~/Views/EmailCertification/EmailCertified.html");
        }

我遇到的错误是

  

控制器没有操作EmailCertifiedURL。我从上面提到的StackFlow文章中获取了这段代码。

我只需要电子邮件链接即可触发控制器操作EmailCertify并将我重定向到静态HTML页面。

https://localhost:44344/EmailCertification/EmailCertify?userName=IS&memberNumber=3000050&certSentDate=636959314302036120 

3 个答案:

答案 0 :(得分:0)

我倾向于使用RedirectToAction()方法,而不仅仅是Redirect()

如果第二个参数是另一个控制器,则必须是该控制器的名称。

return RedirectToAction("EmailCertifiedURL", "EmailCertification");

答案 1 :(得分:0)

这似乎很奇怪。解决方法可能是添加一个新操作,该操作将返回没有布局的整个html。我的意思是,尝试

public ActionResult CertifiedEmail(){ 
    return View(); 
} 

然后,您应该为您的操作创建一个具有相同名称的视图(CertifiedEmail.cshtml),然后在视图内粘贴所有html。在开始时,您应该添加此代码以删除布局

@{ 
    Layout = null; 
}

答案 2 :(得分:0)

public ActionResult Questionnaire()
{
   return Redirect("~/MedicalHistory.html");
}