C# 如何从控制器中重定向到HTML页面?

C# 如何从控制器中重定向到HTML页面?,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,用户收到一封带有链接的电子邮件,必须单击该链接才能验证其电子邮件地址。单击链接后,用户应重定向到两个静态HTML页面中的一个,一个说“您已认证”,另一个说“链接已过期” 我尝试了一些选择。首先,我添加了一个响应。重定向到我的控制器,并带有指向视图的路径。我还尝试在RouteConfig文件中添加routes.MapPageRoute,并将重定向调用更改为尝试使用此名称,但这也不起作用。我看了这个例子来解决这个问题() 以下是我尝试使用重定向访问HTML文件的代码: EmailCertificat

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

我尝试了一些选择。首先,我添加了一个响应。重定向到我的控制器,并带有指向视图的路径。我还尝试在RouteConfig文件中添加routes.MapPageRoute,并将重定向调用更改为尝试使用此名称,但这也不起作用。我看了这个例子来解决这个问题()

以下是我尝试使用重定向访问HTML文件的代码:

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

return Redirect("~/Views/EmailCertification/EmailCertified.html");`
我得到的错误是:

找不到/Views/emailcertificate/emailcertificated.html的路径。我验证了拼写和路径是否正确

如果我将代码更改为在RouteConfig中包含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");
        }

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

如果控制器是另一个控制器,则第二个参数需要是控制器的名称


返回重定向到操作(“EmailCertifiedURL”、“EmailCertification”)

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

如果控制器是另一个控制器,则第二个参数需要是控制器的名称


返回重定向到操作(“EmailCertifiedURL”、“EmailCertification”)

这似乎很奇怪。解决方法可能是添加一个新操作,返回整个html,而不带布局。我是说,试试这个

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

@{ 
    Layout = null; 
}

这似乎很奇怪。解决方法可能是添加一个新操作,返回整个html,而不带布局。我是说,试试这个

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

@{ 
    Layout = null; 
}

这似乎很奇怪。解决方法可能是添加一个新操作,返回整个html,而不带布局。我的意思是,尝试使用这个公共ActionResult CertifiedEmail(){return View();}然后您应该为您的操作创建一个同名的视图(CertifiedEmail.cshtml),并在视图中粘贴所有html。首先,您应该添加此代码以删除布局@{Layout=null;}谢谢!这似乎很奇怪。解决方法可能是添加一个新操作,返回整个html,而不带布局。我的意思是,尝试使用这个公共ActionResult CertifiedEmail(){return View();}然后您应该为您的操作创建一个同名的视图(CertifiedEmail.cshtml),并在视图中粘贴所有html。首先,您应该添加此代码以删除布局@{Layout=null;}谢谢!成功了