关于 ASP.NET MVC 中 POST 上的 c#:Null 值
Null value on POST in ASP.NET MVC
我正在学习 ASP.NET MVC,但遇到以下问题。
视图"SelectProdotti"是
|
@model Models.SelectProdottiModel
@{ @ViewBag.Title @using (Html.BeginForm("ProdottiToListino","Listino", FormMethod.Post))
@Html.HiddenFor(m => m.id)
<input type="submit" value="Salva" /> |
加载视图的动作
|
public ActionResult SelectProdotti(int id)
{
SelectProdottiModel model = new SelectProdottiModel(); return View(model); |
型号
|
using System;
using System.Collections.Generic; using System.Linq; using System.Web; namespace Models public int id; public SelectProdottiModel() |
控制器中的发布动作
|
[HttpPost]
public ActionResult ProdottiToListino(SelectProdottiModel model) { return RedirectToAction("SelectProdotti","Listino", new {id = model.id }); |
我写这段代码只是为了学习,没用。问题是model.id始终为0,即视图不发布值,错误在哪里?
相关讨论
-
public int id 是一个字段。默认的模型绑定器甚至不会尝试绑定它。尝试使用属性:public int id { get; set; }
当前
字段通常用于在类内部存储数据(这些将具有默认私有可见性)。通常,字段的值将通过另一个公共属性或方法设置/读取。使用 C# 属性,这更容易,如果你想让一个字段可读可写,你可以创建一个像
这样的公共属性
|
public int Age {set;get;}
|
当您从表单发布数据时,DefaultModelBinder(将表单数据映射到类对象的类)将尝试创建
将您的字段
|
public class SelectProdottiModel
{ public int id {set;get;} } |
此外,C# 通常使用 PascalCasing。所以我建议你将
相关讨论
- 不正确 - C# 属性通常是 Pascal 大小写,而不是 Camel 大小写。 C# 字段通常是 ??Camel 大小写。
- @NightOwl888 哎呀!我用错了。感谢您的关注。