不工作的默认模式粘结剂 [英] Default model binder not working

查看:111
本文介绍了不工作的默认模式粘结剂的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一个初学者,我不知道我在做什么错在这里。在我的控制器尝试,数字对象不具有价值,同时的FormCollection显示的数字是否正确发布。

示范

 公共类数字
{
    公众诠释SelectedNumber;
    公众诠释LastAttempt;
}

查看

  @model PogodiBroj.Models.Numbers
@ {
ViewBag.Title =猜数字
}< H2>猜数字< / H><形式的行动=/首页/尝试方法=后>
< D​​IV>
<标签>&猜LT; /标签>
@ Html.EditorFor(X => x.LastAttempt)
@ Html.HiddenFor(X => x.SelectedNumber)<输入类型=提交值=尝试/>
< / DIV>
@ {如果(this.IsPost ==真)
   {
       如果(Model.SelectedNumber> Model.LastAttempt)
       {
           < P>我的号码是更大< / P>
       }
       否则,如果(Model.SelectedNumber< Model.LastAttempt)
       {
           < P>我的号码是小< / P>
       }
       其他
       {
           &所述p为H.;!得分&下; / P>
           @ Html.ActionLink(新游戏,)
       }
   }
}
< /表及GT;

控制器

 公共类HomeController的:控制器
{
    //
    // 回家/    公众的ActionResult指数()
    {
        随机数发生器=新的随机();        数字数字=新Models.Numbers();
        numbers.SelectedNumber = generator.Next(100);
        numbers.LastAttempt = 0;        返回查看(数字);
    }    公众的ActionResult尝试(数字结果)
    {
        返回视图(指数,结果); //结果是两个成员设置为0
    }}


解决方案

您一流的性能应符合getter和setter方法​​定义的:

 公共类数字
{
    公众诠释SelectedNumber {搞定;组; }
    公众诠释LastAttempt {搞定;组; }
}

I'm a beginner and I don't know what I'm doing wrong here. In my controller attempt, the Numbers object doesn't have values while FormCollection shows that numbers are posted correctly.

Model

    public class Numbers
{
    public int SelectedNumber;
    public int LastAttempt;
}

View

@model PogodiBroj.Models.Numbers
@{
ViewBag.Title = "Number Guessing";
}

<h2>Guess the number</h2>

<form action="/Home/Attempt" method="post">
<div>
<label>Guess</label>
@Html.EditorFor(x => x.LastAttempt)
@Html.HiddenFor(x => x.SelectedNumber)

<input type="submit" value="Try"/>
</div>
@{ if (this.IsPost == true)
   {
       if (Model.SelectedNumber > Model.LastAttempt)
       {
           <p>My number is greater</p>
       }
       else if (Model.SelectedNumber < Model.LastAttempt)
       {
           <p>My number is lesser</p>
       }
       else
       {
           <p>Score!</p>
           @Html.ActionLink("New game", "")
       }
   }
}
</form>

Controller

    public class HomeController : Controller
{
    //
    // GET: /Home/

    public ActionResult Index()
    {
        Random generator = new Random();

        Numbers numbers = new Models.Numbers();
        numbers.SelectedNumber = generator.Next(100);
        numbers.LastAttempt = 0;

        return View(numbers);
    }

    public ActionResult Attempt(Numbers result)
    {
        return View("Index", result); // result has both members set to 0
    }

}

解决方案

Your class properties should be defined with getters and setters:

public class Numbers
{
    public int SelectedNumber { get; set; }
    public int LastAttempt { get; set; }
}

这篇关于不工作的默认模式粘结剂的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆