2013年11月9日 星期六

Asp.net MVC 實作抓最大排序及繫結的方法(15)

先廢話一下
其實很簡單但是有時會無法繫結
Controller部份先
//抓最大值
int Sort =  (from u in db.TabContent 
  where u.TabID==tabid
  select u.Sort).DefaultIfEmpty().Max(x => x == null ? 0 : x);
ViewBag.Sort = Sort + 1;
以上這部份很簡單沒問題吧
        <div class="form-group">
            @Html.LabelFor(model => model.Sort, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.Sort)
                @Html.ValidationMessageFor(model => model.Sort)
            </div>
        </div>
程式碼自動產生會這樣
但如何修改成能抓ViewBag
        <div class="form-group">
            @Html.LabelFor(model => model.Sort, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBox("Sort",null, new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.Sort)
            </div>
        </div>
改成用弱型別是一個方法記得"Sort"這樣就能抓到ViewBag了
而且最好以欄位名稱命名
這樣在Model Binding時就能抓到值喔
不然會抓不到資料有興趣可以試試 參考網址