C# 在AddModelError中添加指向其他操作的链接
我有一个错误,我想添加一个链接到它C# 在AddModelError中添加指向其他操作的链接,c#,asp.net,asp.net-mvc,asp.net-core-mvc,C#,Asp.net,Asp.net Mvc,Asp.net Core Mvc,我有一个错误,我想添加一个链接到它 ModelState.AddModelError(string.Empty, "You must have a confirmed email to log in."); 我想做的是添加一个指向SendEmailConfirmationMail操作的链接,以便在邮件丢失时将其重新发送给他们 [HttpGet] [AllowAnonymous] public async Task<IActionResult> SendEmailConfirmati
ModelState.AddModelError(string.Empty, "You must have a confirmed email to log in.");
我想做的是添加一个指向SendEmailConfirmationMail操作的链接,以便在邮件丢失时将其重新发送给他们
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> SendEmailConfirmationMail(string email, string returnUrl = null)
{
// Stuff removed
}
[HttpGet]
[异名]
公共异步任务SendEmailConfirmationMail(字符串电子邮件,字符串返回URL=null)
{
//移走的东西
}
我试过的
ModelState.AddModelError(string.Empty,
$"You must have a confirmed email to log in. Click to resend conformation email <a href=account/SendEmailConfirmationMail?Email={model.Email}&returnUrl={returnUrl}> resend</a>");
ModelState.AddModelError(string.Empty,
$“您必须有确认的电子邮件才能登录。单击以重新发送确认电子邮件”);
及
ModelState.AddModelError(string.Empty,$“”);
这不太管用
如果我做错了,我愿意接受其他想法。我还在学习asp.NETMVC
从视图来看,它是如何显示的
@if (error != null)
{
<strong>
<em> : @Html.Raw(error)</em>
</strong>
}
@if(错误!=null)
{
:@Html.Raw(错误)
}
更新:
当我检查页面时。看起来html正在被替换
<li><a href="/Account/SendEmailConfirmationMail?Email=lilaw@eg.dk">Click me</a></li>
a href=“/Account/sendmailconfirmationmail?电子邮件=lilaw@eg.dk“单击我/a
而是使用@Url.Action()
方法获取Url
您可以这样使用它:
@Url.Action("MethodName","ControllerName",new{param1 = param1value});
更新
要获取URL,请使用以下代码:
var url = Url.Action("Account","SendEmailConfirmationMail",new{Email=model.Email,returnUrl = returnUrl;
ModelState.AddModelError(string.Empty,
$"You must have a confirmed email to log in. Click to resend conformation email {url})");
如果您控制显示错误的视图,则最好在视图本身中格式化错误,因为它是表示逻辑 在控制器中添加模型错误:
ModelState.AddModelError("EmailNotConfirmedError", string.Empty); // You can specify the error message or ignore it
在视图中检查此特定错误:
<div>
@if (ViewData.ModelState.ContainsKey("EmailNotConfirmedError"))
{
<em>You must have a confirmed email to log in. Click to resend conformation email @Html.ActionLink("resend", "SendEmailConfirmationMail", "Account")</em>
}
</div>
@if(ViewData.ModelState.ContainsKey(“EmailNotConfirmedError”))
{
您必须有已确认的电子邮件才能登录。单击以重新发送确认电子邮件@Html.ActionLink(“重新发送”、“发送电子邮件确认邮件”、“帐户”)
}
您的错误
是Html编码的字符串,您需要先使用HttpUtility.HtmlDecode
对其进行解码
<em> : @Html.Raw(HttpUtility.HtmlDecode(error))</em>
:@Html.Raw(HttpUtility.HtmlDecode(错误))
在您的视图中,您可能需要调用@html.raw(errorMsg)您是否控制显示错误的视图,如果是,则显示如何呈现错误?@Zabavsky是:@Html.Raw(error)我把它添加到了问题中。请下一位投票者评论一下原因好吗?我不太清楚你打算如何添加它,但这两种方法都不起作用。ModelState.AddModelError(string.Empty,@Url.Action(“sendmailconfirmationmail”,“Account”,new{Email=model.Email,returnUrl=returnUrl});该代码将返回一个URL。你对MVC了解多少?它不是一个用户可以点击的url。这只是文字。我已经使用C#多年了,MVC已经三个月了。请参阅我的更新解决方案该链接看起来是正确的,但html似乎正在被替换<em> : @Html.Raw(HttpUtility.HtmlDecode(error))</em>