C# 提供空属性的表单绑定

C# 提供空属性的表单绑定,c#,asp.net-mvc,asp.net-core,asp.net-core-mvc,asp.net-core-2.0,C#,Asp.net Mvc,Asp.net Core,Asp.net Core Mvc,Asp.net Core 2.0,我尝试了几种方法来解决这个问题,比如 默认活页夹问题: 他们中没有一个人工作过。。。 这显然不是嵌套的。其中大多数是由嵌套问题引起的 请求正在获取提交的参数。只是模型似乎没有指定:s 更奇怪的是,该字段被标记为必需。但是模型状态也返回为有效 我真的看不出我能找到或做更多。。。谢谢 我的模型看起来像这样 EmailSubmitModel.cs HomeController.cs index.cshtml FriendName应声明为。它是当前的一个字段: public string FriendN

我尝试了几种方法来解决这个问题,比如

默认活页夹问题:

他们中没有一个人工作过。。。 这显然不是嵌套的。其中大多数是由嵌套问题引起的

请求正在获取提交的参数。只是模型似乎没有指定:s

更奇怪的是,该字段被标记为必需。但是模型状态也返回为有效

我真的看不出我能找到或做更多。。。谢谢

我的模型看起来像这样 EmailSubmitModel.cs

HomeController.cs

index.cshtml

FriendName应声明为。它是当前的一个字段:

public string FriendName { get; set; }

很好的尝试。。。但asp for实际上会生成名称列。我也尝试过根据你的建议手动分配。但是运气不好:试试这个:将{get;set;}添加到FriendName属性的模型中。模型绑定器不绑定字段,只绑定属性-将其更改为公共字符串FriendName{get;set;}谢谢大家的评论。我想我对属性和字段的概念是错误的。应该多学习C语言,我已经接受了答案。{get;set;}是前进的方向=[]=但是asp for也会生成名称字段FYR
using myapp.Models.Home;

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Submit(EmailSubmitModel emailSubmitModel)
{
    if (ModelState.IsValid)
    {
        return Json(emailSubmitModel);
    }
    return View(emailSubmitModel);
}
@using myapp.Models.Home
@model EmailSubmitModel
<form asp-controller="Home" asp-action="Submit" method="post">
    <div asp-validation-summary="All"></div>
    <label asp-for="FriendName">@Localizer["Friend's Name"]</label>
    <input asp-for="FriendName" type="text" />
    <span asp-validation-for="FriendName"></span>
    <input type="submit" class="btn btn-warning">@Localizer["Send the email"]</button>
</form>
public string FriendName { get; set; }