首页 > 解决方案 > MVC 错误:尽管输入了有效信息,但仍返回“错误”视图而不是“成功”视图

问题描述

仅当表单中的一个或多个字段为空或为空时,才应该返回错误视图,但即使输入了正确的信息,它也会返回。

我的 Home Controller 中有一个方法,它接受字符串参数,并有一个“if”语句来检查表单中的每个字段是否为空或空。如果为空/空,它应该返回存储在共享文件夹中的错误视图。如果没有,它会返回“Success”(我添加到我的主视图文件夹中的视图文件)。但是,无论是否在表单中输入了有效信息,都不会点击 Success 视图。无论哪种方式,它都会返回错误页面。我不确定您是否可以从下面的代码中看出问题所在,但这是我的索引和家庭控制器代码。如果你还有什么需要看的,请告诉我。另外,如果这不是正确的提问方式,我深表歉意;我对这样的 MVC 和论坛很陌生。

以下是家庭控制器代码:

namespace InsuranceApp.Controllers
{
       public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Quote(string firstName, string lastName, string emailAddress, string DateofBirth, string carYear, string carMake, string carModel, string speedingTickets, string dui, string coverage)
        {
            if (string.IsNullOrEmpty(firstName) || string.IsNullOrEmpty(lastName) || string.IsNullOrEmpty(emailAddress) || string.IsNullOrEmpty(DateofBirth) || string.IsNullOrEmpty(carYear) || string.IsNullOrEmpty(carMake) || string.IsNullOrEmpty(carModel) || string.IsNullOrEmpty(speedingTickets) || string.IsNullOrEmpty(dui) || string.IsNullOrEmpty(coverage))

            {
                return View("~/Views/Shared/Error.cshtml");
            }

            else
            {
                return View("Success");
            }   
        }
    }
}

索引代码:

<div class="row no-gutters m-3">
    <div class="card col-sm-12 col-md-10 col-lg-6 mx-auto shadow">
        <div class="card-header text-center">
            <h5 class="m-0">Auto Insurance Quote Generator</h5>
        </div>
        <div class="card-body">
            @using (Html.BeginForm("Quote", "Home", FormMethod.Post))
            {
                <div class="row no-gutters">
                    <div class="form-group col-md-12">
                        <input name="FirstName" type="text" class="form-control" placeholder="First Name" />
                    </div>

                    <div class="form-group col-md-12">
                        <input name="LastName" type="text" class="form-control" placeholder="Last Name" />
                    </div>

                    <div class="form-group col-md-12">
                        <input name="EmailAddress" type="email" class="form-control" placeholder="Email Address" />
                    </div>

                    <div class="form-group col-md-12">
                        <input name="DateOfBirth" type="text" class="form-control" placeholder="Date of Birth MM/dd/yyyy" />
                    </div>

                    <div class="form-group col-md-12">
                        <input name="CarYear" type="text" class="form-control" placeholder="Car Year" />
                    </div>

                    <div class="form-group col-md-12">
                        <input name="CarMake" type="text" class="form-control" placeholder="Car Make" />
                    </div>

                    <div class="form-group col-md-12">
                        <input name="Car Model" type="text" class="form-control" placeholder="Car Model" />
                    </div>
                    <div class="form-group col-md-12">
                        <input name="SpeedingTickets" type="text" class="form-control" placeholder="How many speeding tickets do you have?" />
                    </div>

                    <div class="form-group col-md-12">
                        <input name="DUI" type="text" class="form-control" placeholder="Have you ever had a dui?" />
                    </div>
                    <div class="form-group col-md-12">
                        <input name="Coverage" type="text" class="form-control" placeholder="Would you like Full Coverage or Liability?" />
                    </div>
                    <button type="submit" class="btn btn-block btn-primary">Submit</button>
                </div>
            }
        </div>
    </div>
</div>

标签: c#asp.net-mvc

解决方案


您在 Controller 中的名称与 html 文件中的名称不同。

在 MVC 中,您需要使用大小写字母完全相同的名称。

如果 HTML 文件中的名称是“名称”,则控制器中的名称需要是“字符串名称”而不是“字符串名称”。

希望对您有所帮助。


推荐阅读