ASP.NET MVC模型繫結——繫結部分欄位
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace Xautjzd.Models
{
[Bind(Exclude="CollectionStationId, ContactInfo ")] //排除一部分欄位,只繫結模型中的部分欄位
public class ServeStation
{
[Key]
[DisplayName("服務站編號")]
public string ServeStationId { get; set; }
[DisplayName("服務站")]
[Required]
public string ServeStationName { get; set; }
[DisplayName("集貨點編號")]
[Required]
public string CollectionStationId { get; set; }
[DisplayName("站長")]
[Required]
public string ServeStationManager { get; set; }
[DisplayName("聯絡方式")]
[Required]
public string ContactInfo { get; set; }
[DisplayName("鄉鎮")]
[Required]
public string Town { get; set; }
[DisplayName("總站名稱")]
[Required]
public string StationName{ get; set; }
[DisplayName("所管轄區業務經理")]
[Required]
public string RegionBusinessManager { get; set; }
[DisplayName("所管轄區總經理")]
[Required]
public string StationManger { get; set; }
[DisplayName("備註")]
[Required]
public string Note { get; set; }
}
}
Bind雖可以限制繫結的欄位,但是模型驗證卻無法通過,因為模型驗證在Submit後Action執行前完成,所以就會無法通過ModelState.IsValid驗證值判斷到底驗證是否成功。
儘管如此,我們還是可以通過ModelState["欄位名稱"]語句來判斷是否發生了錯誤,但如此做會讓ASP.NET MVC變得很不方便。
於是乎ASP.NET MVC的Controller類提供了TryUpdateModel方法來解決這個問題,eg:
if(!TryUpdateModel(serveStation))
{
//驗證失敗
return View();
}
db.saveChanges();
return View("Index");
注:可用ModelState.addModelError("模型欄位名","驗證失敗的錯誤資訊");來手動新增驗證失敗時的錯誤提示資訊
相關文章
- 【ASP.NET Core】MVC 控制器的模型繫結(巨集觀篇)ASP.NETMVC模型
- 【ASP.NET Core】MVC模型繫結:自定義InputFormatter讀取CSV內容ASP.NETMVC模型ORM
- 【ASP.NET Core】MVC模型繫結:非規範正文內容的處理ASP.NETMVC模型
- GridView繫結欄位格式DataFormatString的使用ViewORM
- Vue、MVVM、MVC、雙向繫結VueMVVMMVC
- MVC 繫結 集合型別 modelMVC型別
- 【asp.net core】自定義模型繫結及其驗證ASP.NET模型
- Gin 模型繫結驗證模型
- Gin 框架怎麼驗證繫結到結構體的欄位?框架結構體
- 【阿不】深入ASP.NET資料繫結(下)—多樣的繫結方式ASP.NET
- 定位器裝置繫結新增手機號欄位
- 61. 路由 路由模型繫結路由模型
- 在ASP.NET MVC中使用Knockout實踐09,自定義繫結ASP.NETMVC
- 【阿不】深入ASP.NET資料繫結(中)—資料雙向繫結機理ASP.NET
- 在ASP.NET MVC中使用Knockout實踐01,繫結Json物件ASP.NETMVCJSON物件
- SAP OData V4 模型的絕對繫結和相對繫結模式模型模式
- 【ASP.NET Core】繫結到 CancellationToken 物件ASP.NET物件
- 優雅的使用路由模型繫結路由模型
- Nancy之ModelBinding(模型繫結)NaN模型
- Gridview繫結資料庫的欄位,根據條件欄位顏色改變View資料庫
- 理解靜態繫結與動態繫結
- 理解ASP.NET Core - 模型繫結&驗證(Model Binding and Validation)ASP.NET模型
- this 繫結解析
- 繫結事件事件
- 事件繫結事件
- 【ASP.NET Core】MVC操作方法如何繫結Stream型別的引數ASP.NETMVC型別
- 在ASP.NET MVC中使用Knockout實踐08,使用foreach繫結集合ASP.NETMVC
- SSL證書繫結域名還是繫結IP?
- C++ — 靜態繫結與動態繫結C++
- dataGridView繫結Dictionary |Dictionary繫結到DataGridViewView
- 【阿不】深入ASP.NET資料繫結(上)ASP.NET
- JS的事件繫結和事件流模型JS事件模型
- Spring MVC xml繫結pojo造成的XXESpringMVCXMLPOJO
- vue 雙向繫結(v-model 雙向繫結、.sync 雙向繫結、.sync 傳物件)Vue物件
- C++的動態繫結和靜態繫結C++
- IOC容器的繫結解析過程(繫結單例)單例
- java繼承-靜態繫結和動態繫結Java繼承
- Laravel 路由的隱式繫結和顯式繫結Laravel路由