Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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.NET视图中的表单字段在控制器中显示为空_C#_Asp.net_Asp.net Mvc_Asp.net Core Mvc 2.0 - Fatal编程技术网

C# ASP.NET视图中的表单字段在控制器中显示为空

C# ASP.NET视图中的表单字段在控制器中显示为空,c#,asp.net,asp.net-mvc,asp.net-core-mvc-2.0,C#,Asp.net,Asp.net Mvc,Asp.net Core Mvc 2.0,即使声明了asp控制器和asp操作,表单字段也不会返回表单的值。 表单确实转到right controller函数并返回right视图,但是,如果表单对象为NULL,则它确实返回right视图 @using ActionAugerMVC.Models @model Tuple<IEnumerable<Cities>,Content,IEnumerable<Content>,Quote> @addTagHelper "*,Microsoft.AspNetCore

即使声明了asp控制器和asp操作,表单字段也不会返回表单的值。 表单确实转到right controller函数并返回right视图,但是,如果表单对象为NULL,则它确实返回right视图

@using ActionAugerMVC.Models
@model Tuple<IEnumerable<Cities>,Content,IEnumerable<Content>,Quote>
@addTagHelper "*,Microsoft.AspNetCore.Mvc.TagHelpers"

 <div class="sidebar__item">
    <p class="subheading">Instant Quote Request</p>
       <form class="register__form" role="form" asp-controller="Plumbing" asp-action="QuoteForm" method="post">
             <div class="text-danger" asp-validation-summary="All"></div>
             <div class="form-group">

               <label class="sr-only">Full Name </label>
               <input asp-for="@Model.Item4.FullName" type="text" class="form-control" placeholder="Full name">
               </div>
               <div class="form-group">
                 <label class="sr-only">Your phone</label>
                 <input asp-for="@Model.Item4.Phone" type="tel" class="form-control" placeholder="Your phone">
                 <span asp-validation-for="@Model.Item4.Phone" class="text-danger"></span>
               </div>
               <div class="form-group">
                 <label class="sr-only">E-mail</label>
                 <input asp-for="@Model.Item4.Email" type="email" class="form-control" placeholder="E-mail">
                 <span asp-validation-for="@Model.Item4.Email" class="text-danger"></span>
               </div>
               <div class="form-group">
                 <label class="sr-only">Your Message</label>
                 <input asp-for="@Model.Item4.Message" type="text" class="form-control" placeholder="Your Message">
               </div>
                <input type="submit" value="Get a Quote Now" class="btn btn-accent btn-block">
         </form>
   </div> <!-- .sidebar__item -->

视图上的模型与控制器中试图将其绑定到的模型不同。您将无法获得匹配的键/值对

将剃须刀放在局部视图中,以
Quote
作为模型,然后进行尝试

\u QuoteForm.cshtml

@model Quote

<div class="form-group">
    <label class="sr-only">Full Name </label>
    <input asp-for="FullName" type="text" class="form-control" placeholder="Full name">
</div>
<div class="form-group">
    <label class="sr-only">Your phone</label>
    <input asp-for="Phone" type="tel" class="form-control" placeholder="Your phone">
    <span asp-validation-for="Phone" class="text-danger"></span>
</div>
<div class="form-group">
    <label class="sr-only">E-mail</label>
    <input asp-for="Email" type="email" class="form-control" placeholder="E-mail">
    <span asp-validation-for="Email" class="text-danger"></span>
</div>
<div class="form-group">
    <label class="sr-only">Your Message</label>
    <input asp-for="Message" type="text" class="form-control" placeholder="Your Message">
</div>
using ActionAugerMVC.Models
@model Tuple<IEnumerable<Cities>,Content,IEnumerable<Content>,Quote>
@addTagHelper "*,Microsoft.AspNetCore.Mvc.TagHelpers"

<div class="sidebar__item">
    <p class="subheading">Instant Quote Request</p>
    <form class="register__form" role="form" asp-controller="Plumbing" asp-action="QuoteForm" method="post">
         <div class="text-danger" asp-validation-summary="All"></div>

         @Html.Partial("_QuoteForm", Model.Item4)

         <input type="submit" value="Get a Quote Now" class="btn btn-accent btn-block">
    </form>
</div> <!-- .sidebar__item -->
@model-Quote
全名
你的电话
电子邮件
你的信息
OriginalView.cshtml

@model Quote

<div class="form-group">
    <label class="sr-only">Full Name </label>
    <input asp-for="FullName" type="text" class="form-control" placeholder="Full name">
</div>
<div class="form-group">
    <label class="sr-only">Your phone</label>
    <input asp-for="Phone" type="tel" class="form-control" placeholder="Your phone">
    <span asp-validation-for="Phone" class="text-danger"></span>
</div>
<div class="form-group">
    <label class="sr-only">E-mail</label>
    <input asp-for="Email" type="email" class="form-control" placeholder="E-mail">
    <span asp-validation-for="Email" class="text-danger"></span>
</div>
<div class="form-group">
    <label class="sr-only">Your Message</label>
    <input asp-for="Message" type="text" class="form-control" placeholder="Your Message">
</div>
using ActionAugerMVC.Models
@model Tuple<IEnumerable<Cities>,Content,IEnumerable<Content>,Quote>
@addTagHelper "*,Microsoft.AspNetCore.Mvc.TagHelpers"

<div class="sidebar__item">
    <p class="subheading">Instant Quote Request</p>
    <form class="register__form" role="form" asp-controller="Plumbing" asp-action="QuoteForm" method="post">
         <div class="text-danger" asp-validation-summary="All"></div>

         @Html.Partial("_QuoteForm", Model.Item4)

         <input type="submit" value="Get a Quote Now" class="btn btn-accent btn-block">
    </form>
</div> <!-- .sidebar__item -->
使用ActionAugerMVC.Models
@模型元组
@addTagHelper“*,Microsoft.AspNetCore.Mvc.TagHelpers”

即时报价请求

@Html.Partial(“'u QuoteForm”,Model.Item4)
问题在于将元组用作视图的模型,并与
asp for
结合使用。例如,使用以下内容:

<input asp-for="@Model.Item4.FullName" type="text" class="form-control" placeholder="Full name">
这应该足够让psych刮掉,只需将字段命名为
FullName
,而不是
Item4.FullName
。如果不是,则可能需要通过以下方式重置
HtmlFieldPrefix

@Html.Partial("_QuoteFields, Model.Item4, new ViewDataDictionary(ViewData) { TemplateInfo = new TemplateInfo {  HtmlFieldPrefix = "" } })

实际上,我正在同一视图中处理多个模型。这就是为什么我有一个元组。元组实际上是一个非常糟糕的方法。最好有一个封装所有内容的类,然后将其用作模型。然后你的项目有明确的名称,比如Quote而不是Item4,这使你更容易知道你在用什么。我已经有了一个视图模型设置,其中有3个不同的模型。我没有试过,让我想想。表单在页面的侧栏中。我尝试使用部分视图,但主视图引用元组,而部分视图引用引用引用模型,这是asp.net引擎不接受的。如果只传入主视图模型的引用部分,这不是问题。如果您传入整个模型,或者根本不传入模型(隐式传入主视图模型),那么是的,您将得到一个异常。如何在局部视图中访问元组的引号部分?正如我向您展示的:
@Html.partial(“'u QuoteFields”,model.Item4)
。第二个参数是局部视图的模型,由于只传递了
Item4
,因此它将只是
Quote
片段。局部视图上的引用可以是
@model ActionAugerMVC.Models.Quote
,对吗