【问题标题】:C# Cannot model bind to new html input with type=weekC# 无法模型绑定到 type=week 的新 html 输入
【发布时间】:2016-11-07 06:22:15
【问题描述】:

我正在使用 c#/mvc5 并试图将选定的一周返回给我的控制器。

在视图中,我呈现了一个“星期”类型的 html 输入控件。根据我收集的信息,这应该返回一个字符串值,指示周和年。我通过视图模型传递数据。

我总是在我的控制器中得到一个空字符串。 知道我做错了什么吗?我发现很少使用星期类型的 html5 输入。

这是视图:

@model JoscoConnect.ViewModels.NewTransactionViewModel
@using System.Web.UI.WebControls

@{
    ViewBag.Title = "New";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>New Transaction</h2>

@using (Html.BeginForm("Create", "Transaction", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <div class="form-group">
        @Html.TextBoxFor(m => m.Week, new { type = "week"})
    </div>

    <div class="form-group">
        @Html.LabelFor(m => m.trustedFile)
        @Html.TextBoxFor(m => m.trustedFile, new { type = "file" })
    </div>

    <input class="form-control btn btn-primary" type="submit" name="Submit" value="Submit" />
}

这是 ViewModel:

namespace JoscoConnect.ViewModels
{
    public class NewTransactionViewModel
    {
        public string Week;

        [Required,Display(Name = "Trusted File")]
        public HttpPostedFileBase trustedFile { get; set; }

    }
}

这是控制器动作:

[HttpPost]
public ActionResult Create(NewTransactionViewModel newTransactionViewModel)
{
    string week = newTransactionViewModel.Week.ToString();

    TrustedImport trustedImport = new TrustedImport();
    bool result = trustedImport.CheckFileExists("test1");

    return View();
}

【问题讨论】:

    标签: c# asp.net-mvc html entity-framework


    【解决方案1】:

    原来是因为视图模型中没有默认的 getter 和 setter。

    当我将 public string Week; 更改为 public string Week {get; set;} 时,它工作正常。

    【讨论】:

    • 请注意——区别在于一个是字段,另一个是属性。默认 getter/setter 只是定义属性的一种方式。
    猜你喜欢
    • 2021-07-09
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2018-02-14
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多