2017-07-14 1 views
0

ユーザーはIDを入力するためのこのテキストボックスをコントローラーメソッドに送信し、IDに基づいてデータベース内のコンサルタントを検索し、入力を強制的に大文字にしてからコントローラに送信したいと思っています。私はコントローラメソッドの中で大文字にすることができますが、作成されるコンサルタントオブジェクトは、最初に小文字で入力した場合は小文字のIDを持ち、何らかの理由で別のビューでコンサルタントの詳細を編集するためのモーダルポップアップを持つ場合、 ViewConsultantは、モデルに添付されている大文字のIDではなく、元の小文字のIDを引き出しています。私はこの質問が理にかなったことを願っています。問題が何であるかを明確にしていないかどうかを明確にすることができます。コントローラーMVCに送信する前に、すべてのキャップにテキスト入力を強制します。

<input type="text" class="form-control " id="ID" name="ID" style="vertical-align:bottom; text-transform:uppercase;" /> 
+2

'コントローラーメソッド内で大文字にすることはできますが、ユーザーが最初に小文字で入力した場合、作成されるConsultantオブジェクトのIDは小文字になります。これを行うにはJavaScriptを使用できますが、クライアントは組み込みのツールを使用して入力をオフ/変更できます。サーバサイドは常に大文字を保証する唯一の方法です。あなたのコントローラでは、 'var upperCaseId = Id.ToUpper();'のような 'string.ToUpper()'を呼び出すときに新しい変数を正しく設定していることを確認して、 'upperCaseId'をSQL文に渡します。オリジナルID。 – Tommy

+0

申し訳ありませんが、私はより具体的にすべきでした。ユーザーが最初に小文字で入力した場合、ViewConsultant()コントローラメソッドに渡されるConsultantModelパラメータには小文字のIDがあります。私は方法の中でそれを簡単に変更し、問題なしでコンサルタントを調べることができます。私がViewConsultantビューに送るモデルでも、それを大文字にしています。発生する問題は、コンサルタントの詳細を編集するためのモーダルポップアップです。私はそこに隠されたIDテキストボックスを持っていて、その特定のものはモデルからの大文字の代わりに元の小文字のIDを取得しています。それは理にかなっていますか? – Kblo55

+0

'ViewConsultant()'と 'Search()'(またはコンサルタントIDを入力するために使用しているアクション)コントローラメソッドのメソッドを表示できますか? – Tommy

答えて

0

大文字と小文字のIDによって、プロパティ名について話していると思いますか?私のビューでは、メインビューのルートに複雑なプロパティを持つモデルと、モーダル(またはモーダルの少なくとも1つの複雑なプロパティ)を持つモデルを使用する傾向があります。

私は、次の手順を実行します。UIで

public class RootViewModel 
{ 

    public long ID { get; set; } 

    public string OtherData { get;set; } 

    public ModalDetails ModalDetails { get;set; } 

} 

public class ModalDetails 
{ 
    public long ID { get; set; } 

    public string OtherData { get; set; } 
} 

はその後、あなたは次のようなことを行うことができます。

<form> 
    @Html.HiddenFor(m => m.ID) 
</form> 

<div class="modal fade"> 
.. 
@Html.HiddenFor(m => m.ModalDetails.ID) 
</div> 

その方法は、モーダルデータがメインビューデータから分離されています。モーダルの周りにフォームがある場合は、ModalDetailsレコードがポストバック時などに配置されるため、ポスドバックされたことを検出することもできます。

関連する問題