【问题标题】:Failed to load resource: the server responded with a status of 500 (Internal Server Error) asp.net加载资源失败:服务器响应状态为 500(内部服务器错误)asp.net
【发布时间】:2018-09-24 13:14:38
【问题描述】:

这是我的控制器:

namespace Login.Controllers
{
    public class LoginController : Controller
    {
        // GET: Login
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Autherize(Login.Models.user usermodel)
        {

            using (LogEntities db = new LogEntities())
            {
                var userdetails = db.users.Where(x => x.USERNAME == usermodel.USERNAME && x.PASSWORD == usermodel.PASSWORD);
                if (userdetails == null)
                {
                    usermodel.ErrorMessage = "wrong inputs";
                    return View("Index", usermodel);
                }
                return View();
            }

        }
    }
}`

这是我的看法:

    @using (Html.BeginForm("Autherize", "Login", FormMethod.Post))
    {
        <table>
            <tr>
                <td></td>
                <td> Login Form   </td>
            </tr>
            <tr>
                <td> @Html.LabelFor(model => model.USERNAME)   </td>
                <td> @Html.EditorFor(model => model.USERNAME)  </td>
            </tr>
            <tr>
                <td> @Html.ValidationMessageFor(model => model.USERNAME)   </td>
            </tr>
            <tr>
                <td> @Html.LabelFor(model => model.PASSWORD)   </td>
                <td> @Html.EditorFor(model => model.PASSWORD)  </td>
            </tr>
            <tr>
                <td> @Html.ValidationMessageFor(model => model.PASSWORD)   </td>
            </tr>
            <tr>
                <td colspan="2"> <label class="field-validation-error">@Html.DisplayFor(model => model.ErrorMessage)</label> </td>
            </tr>
            <tr>
                <td></td>
                <td> <input type="submit" name="login" value="login" /> </td>
            </tr>
        </table>
    }

</div>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

我收到了这个错误。我该如何解决这个错误?

未找到视图“Autherize”或其主视图或没有视图引擎 支持搜索的位置。以下位置是 搜索:

【问题讨论】:

  • 检查LoginController是否可以通过路由解析。并且不确定加载视图需要什么(可能不是必需的)

标签: c# asp.net-mvc


【解决方案1】:

您的 Get 方法名称是 Index,因此您必须更改为 Authorize 而不是只有它才能找到您的 View。

【讨论】:

    【解决方案2】:

    您已在Autherize 方法中写入return View();,但尚未在/Views/Login 文件夹中为Autherize (Autherize.cshtml) 创建视图页面。

    您可以创建Autherize.cshtml 视图并将其返回或重定向到已经存在的视图(可能是您希望用户在获得授权后被重定向到的页面)。

    【讨论】:

    • 非常感谢您的反馈,在这种情况下,我想在输入错误时显示该错误消息。我尝试您的方法,我创建了授权视图​​,但我输入错误或更正一次只显示授权视图,没有给出错误消息
    【解决方案3】:

    return View(); 语句正在尝试根据方法名称查找视图。因为,你没有提到任何视图名称。请改为提及视图名称。

    [HttpPost]
    public ActionResult Autherize(Login.Models.user usermodel)
    {
        using (LogEntities db = new LogEntities())
        {
            var userdetails = db.users.Where(x => x.USERNAME == usermodel.USERNAME 
                && x.PASSWORD == usermodel.PASSWORD);
            if (userdetails == null)
            {
                usermodel.ErrorMessage = "wrong inputs";
                return View("Index", usermodel);
            }
            return View('Autherize');
       }
    }
    

    【讨论】:

    • 我创建了授权视图​​,但是当我输入错误时,我无法收到错误消息,只显示授权视图。
    • 如果 userdetails 不为空,即return View('Autherize'),请尝试仅在返回语句中提及Autherize
    【解决方案4】:

    首先修改你的代码

        public ActionResult Index()
        {
            return View();
        }
    
        [HttpPost]
        public ActionResult Index(Login.Models.user usermodel)
        {
    
            using (LogEntities db = new LogEntities())
            {
                var userdetails = db.users.Where(x => x.USERNAME == usermodel.USERNAME && x.PASSWORD == usermodel.PASSWORD);
                if (userdetails == null)
                {
                    ViewData["ErrorMessage"] = "wrong inputs";
                    return View("Index");
                }
                return View("Autherize");
            }
    
        }
    

    并将此 @using (Html.BeginForm("Autherize", "Login", FormMethod.Post)) 更改为 @using (Html.BeginForm("Index", "Login", FormMethod.Post))

    然后在Index.cshtml页面

    @if (ViewData["ErrorMessage"] != null)
    {
       //Write your error message here.
       <h5>User name and password wrong</h5>
    }
    

    然后创建Autherize 视图:

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

    如果您的 USERNAME 和 PASSWORD 不为空,请转到 Autherize 查看。

    【讨论】:

    • 我做了那个方法,但是当我输入错误时我无法得到那个错误消息。当我在两个时间页面显示登录表单中给出正确输入或错误输入时显示该错误消息。
    • 我编辑了我的答案
    • 感谢您的支持。但我想,如果我提供了错误的用户名和密码,那么应该显示我的错误消息。但在这种情况下不会发生,我提供的每个用户名、密码都会返回授权view.当我输入错误时我如何查看错误消息。
    • 我再次编辑了我的代码。我想现在你的问题可以解决了。
    猜你喜欢
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2014-11-24
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多