【问题标题】:MVC form POSTING null modelMVC 表单 POSTING 空模型
【发布时间】:2015-11-01 20:19:23
【问题描述】:

此 Umbraco 表单渲染良好,但无法正确发布我的模型 - 在表面控制器中设置断点时,所有模型属性均为空。

我错过了什么小东西吗?

型号

namespace Fairy_Cottage.Models
{
public class ContactFormModel
{
    [Required]
    public string Name;

    [Required]
    [EmailAddress]
    public string EmailAddress;

    [Required]
    public string TelephoneNumber;

    [Required]
    public string Message;

    public int ThankYouPage;
}
}

表面控制器

namespace Fairy_Cottage.Controllers
{
public class ContactFormSurfaceController : SurfaceController
{
    [HttpPost]
    [ValidateAntiForgeryToken()]
    public ActionResult HandleFormSubmit(ContactFormModel Model)
    {
        if (!ModelState.IsValid)
        {
            return CurrentUmbracoPage();
        }

        //send email

        return RedirectToUmbracoPage(Model.ThankYouPage);
    }
}
}

查看

@using Fairy_Cottage.Models
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
Layout = "Master.cshtml";
 }
@Model.Content.Name
@Model.Content.GetPropertyValue("content")

@Html.Partial("~/Views/Partials/_ContactForm.cshtml", new     ContactFormModel { ThankYouPage = 1061 })

部分(联系表单本身)

@using Fairy_Cottage.Controllers
@model Fairy_Cottage.Models.ContactFormModel

@using (var form = Html.BeginUmbracoForm<ContactFormSurfaceController>("HandleFormSubmit"))
{
@Html.AntiForgeryToken()

<div class="row">
    <div class="col-xs-12 col-md-6 col-md-offset-3">
        <div class="">
            <label class="form-label" for="">Contact Name @Html.ValidationMessageFor(m => m.Name)</label>
            <div class="input-group">
                @Html.TextBoxFor(m => m.Name, new { @class = "form-field", placeholder = "Enter Name", required = "required" })
            </div>
        </div>
        <div class="">
            <label class="form-label" for="">Telephone Number @Html.ValidationMessageFor(m => m.TelephoneNumber)</label>
            <div class="input-group">
                @Html.TextBoxFor(m => m.TelephoneNumber, new { @class = "form-field", placeholder = "Enter Telephone Number", required = "required" })
            </div>
        </div>
        <div class="form-group">
            <label class="form-label" for="">Email Address @Html.ValidationMessageFor(m => m.EmailAddress)</label>
            <div class="input-group">
                @Html.TextBoxFor(m => m.EmailAddress, new { @class = "form-field", placeholder = "Enter Email", required = "required" })
            </div>
        </div>
        <div class="form-group">
            <label class="form-label" for="">Message @Html.ValidationMessageFor(m => m.Message)</label>
            <div class="input-group">
                @Html.TextAreaFor(m => m.Message, new { @class = "form-field", rows = 8, required = "required" })
            </div>
        </div>

        @Html.HiddenFor(x => x.ThankYouPage)

        <input type="submit" name="submit" id="submit" value="Submit">
    </div>
</div>
}

【问题讨论】:

    标签: asp.net-mvc model-view-controller umbraco


    【解决方案1】:

    首先,你的模型应该有属性,而不是字段:

    [Required]
    public string Name { get; set; }
    
    [Required]
    [EmailAddress]
    public string EmailAddress { get; set; }
    

    可能就是这样。

    【讨论】:

    • 很尴尬,你是对的 - 谢谢你指出了这一点,我的表格是正确的。
    • 很高兴它很容易修复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    相关资源
    最近更新 更多