Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在AddModelError中添加指向其他操作的链接_C#_Asp.net_Asp.net Mvc_Asp.net Core Mvc - Fatal编程技术网

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>&lt;a href="/Account/SendEmailConfirmationMail?Email=lilaw@eg.dk"&gt;Click me&lt;/a&gt;</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似乎正在被替换
  • a href=“/Account/sendmailconfirmationmail?电子邮件=lil@egadfdaf.dk“单击我/a
  • <em> : @Html.Raw(HttpUtility.HtmlDecode(error))</em>