私はasp.net mvc Webアプリケーションに取り組んでいますが、現在、基本的に次の理由により、文字列を処理するときにいくつかの問題が発生しています:-
最初と最後に空白を使用して値を挿入または編集します。
フィールドを編集するときは、文字列の一意性を確認してください。
最初の問題については、次のアクション メソッドがあります。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(DataCenter dc)
{
データセンターには「名前」という名前のプロパティがあります。ユーザーが「ABC」や「ABC」などの値を挿入すると、それらは 2 つの異なる値として SQL サーバーに保存されます。データベースに一意の制約を定義しましたが。したがって、これを解決するために私が見つけた最良の方法は、アクションメソッドを次のように変更することです。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(DataCenter dc)
{
dc.name = dc.name.trim();
//…
}
しかし、関連するすべてのアクション メソッドと、編集および作成アクション メソッドでそうすることにしました。
質問 1: 文字列をトリミングするためのより良い方法はありますか?
2番目の問題は、私がチェックしていたアクションメソッドで、サービスメソッドを書くことによって、次のように文字列が一意であるかどうかです:-
if (!repository.IsDataCenterUnique(dc.Name))
{
ModelState.AddModelError("Name", "Error occurred: DataCenter Name already exsists.");
}
ただし、このメソッドを編集アクション メソッド内に置くと、ユーザーがオブジェクトを編集しても名前を変更しなかった場合にエラーが発生します。そこで、オブジェクト ID を渡すようにサービス メソッドを変更し、次のように比較から除外しました。
if (!repository.IsDataCenterUnique(dc.Name,dc.ID))
{
ModelState.AddModelError("Name", "Error occurred: DataCenter Name already exsists.");
}
public bool IsDataCenterUnique(string name,int? id=0)
{
return !tms.DataCenters.Any(a => a.Name.ToUpper() == name.ToUpper() && a.ID != id);
}
質問 2: オブジェクト ID を渡して除外する代わりに、この問題を解決するためのより良い方法はありますか?