Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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# 在asp/mvc应用程序中使用错误提示_C#_Javascript_Asp.net_Asp.net Mvc 3 - Fatal编程技术网

C# 在asp/mvc应用程序中使用错误提示

C# 在asp/mvc应用程序中使用错误提示,c#,javascript,asp.net,asp.net-mvc-3,C#,Javascript,Asp.net,Asp.net Mvc 3,我一直在寻找一种直接的方法来提示错误消息,最好是一个弹出窗口(javascript或其他),让登录系统失败的用户使用此表单: @model Blog.Models.ViewModels.LoginView <!DOCTYPE html> <html> <body> @using (Html.BeginForm()) { <p>Your name: @Html.TextBoxFor(x => x.name) </p> <p&g

我一直在寻找一种直接的方法来提示错误消息,最好是一个弹出窗口(javascript或其他),让登录系统失败的用户使用此表单:

@model Blog.Models.ViewModels.LoginView
<!DOCTYPE html>
<html>
<body>
@using (Html.BeginForm()) {
<p>Your name: @Html.TextBoxFor(x => x.name) </p>
<p>Your password: @Html.TextBoxFor(x => x.password)</p>
    <input type="submit" value="Login" />    
}
</body>
</html>

我建议不要使用弹出式或alert()对话框。相反,我将使用样式化的div来显示错误消息。如果您使用的是jQueryUI,可以试试我的。因为它是用javascript显示的,所以您可以这样使用它:

控制器:

private BlogModel model = new BlogModel();
[HttpPost]
    public ActionResult LoginForm(string name, string password)
    {
                SysUser user = model.SysUsers.Where(x => x.SysUserName == name).First();
                {
                    if (user != null && user.SysPassword == password)
                    {
                        Session["usrn"] = name;
                        return RedirectToAction("LoginSuccessful", "Users");
                    }
                    else
                    {
                        //display error//
                    }
                }
[HttpPost]
public ActionResult LoginForm(string name, string password)
{
    SysUser user = model.SysUsers.Where(x => x.SysUserName == name).First();
    {
        if (user != null && user.SysPassword == password)
        {
            Session["usrn"] = name;
            return RedirectToAction("LoginSuccessful", "Users");
        }
        else
        {
            ViewBag.LoginError = true;
        }
    }
}
带有jquery消息的标记:

<div id="loginError" style="display:none">Login Error...</div>

@if (ViewBag.LoginError == true)
{
    <script type="text/javascript">
        $("#loginError").message({type:"error"});
    </script>
}
@if (ViewBag.LoginError == true)
{
    <div id="loginError" class="error">Login Error...</div>
}
登录错误。。。
@如果(ViewBag.LoginError==true)
{
$(“#登录错误”)。消息({type:“error”});
}
或者,如果您愿意,不使用jquery消息:

<div id="loginError" style="display:none">Login Error...</div>

@if (ViewBag.LoginError == true)
{
    <script type="text/javascript">
        $("#loginError").message({type:"error"});
    </script>
}
@if (ViewBag.LoginError == true)
{
    <div id="loginError" class="error">Login Error...</div>
}
@if(ViewBag.LoginError==true)
{
登录错误。。。
}

使用
Ajax.BeginForm()
而不是
Html.BeginForm()
在TempDataYep中为页面添加一点脚本,谢谢jrummell这正是我所需要的。我只需要在控制器上添加一个新操作,在其中定义LoginError,如下所示:
public ActionResult LoginFailed(){ViewBag.LoginError=true;return View(“LoginForm”);}
然后重定向到该控件,否则LoginForm操作将不会有输出,但现在它可以工作了!