2017-03-02 18 views
0

午後の皆さん、表示欄が空白の場合

私はC#とイムに新しいですが、これらのフィールドの両方が空白の場合は、その後に、二つのフィールドの値をチェックし、ためにif文を作成しようとしているユーザーへのメッセージユーザにメッセージを表示する。

私の2つのフィールドは、データ型がDateTimeのDateofBirthと、データ型がintのAgeです。私はスタジオ2013を使用し、C#のmvcプロジェクトを持っています。

私のcreate.cshtmlページでは、私はこれらの2つのフォームフィールドのためのかみそりの構文を使用しています。

@Html.EditorFor(model => model.client.DateOfBirth, new { htmlAttributes = new { @class = "form-control", @placeholder = "dd-mm-yyyy" } }) 

@Html.EditorFor(model => model.client.AgeNotKnown, new { htmlAttributes = new { @class = "form-control", @placeholder = "Age in Years" } }) 

ユーザーがフォームを送信するとき、一方または他方のいずれかのフィールドに記入する必要があります。

私のコントローラとActionResult CreateのHttpPostにあります。私はifステートメントを介してこれを動作させるためにいくつかの方法を試しましたが、私はこれを動作させるように見えます。

私はstring.IsNullOrEmptyメソッドを使用しようとしましたが、これらはDateTimeおよびintデータ型であるため動作しません。以下のサンプルを参照してください。

if (string.IsNullOrEmpty(clientViewRecord.client.AgeNotKnown));    
      { 
       MessageBox.Show("please an Age if DOB not known"); 
      } 

db.ClientRecords.Add(clientViewRecord.client); 
       db.SaveChanges(); 
       return RedirectToAction("MainMenu", "Home"); 

私はここに3つのエラーを取得:

  1. は、引数1: '?int型から変換することはできませんが「string」に

  2. 名「のMessageBox」は現在のコンテキスト3に存在しない)に「string.IsNullOrEmpty(文字列)」の 最良のオーバーロードされたメソッドの試合は いくつかの無効な引数

  3. 最高を持っています「string.IsNullOrEmpty(文字列)」のオーバーロードされたメソッドの試合は、私はこの作業を取得しようとしているもう一つの方法は、以下の通りです いくつかの無効な引数

を持っている...

 if (clientViewRecord.client.AgeNotKnown == 0 || clientViewRecord.client.DateOfBirth == 0);    
      { 
       MessageBox.Show("please enter an Age or if DOB"); 
      } 

      db.ClientRecords.Add(clientViewRecord.client); 
      db.SaveChanges(); 
      return RedirectToAction("MainMenu", "Home");   

メッセージボックスでも同じ問題が発生し、DateofBirthファイルでは次のようになります。

  1. 演算子 '=='は 'System.DateTime?'型のオペランドには適用できません。と 'int'

私はC#に新しいですが、ちょうどちょっとした助けや提案が必要だと思っています。すべてのMessageBoxクラスの

よろしく ベティ

+0

'MessageBox'はウィンドウフォームです(Webアプリケーションでは使用できません)。 'ModelState'エラーを追加し、ビューが' @ Html.ValidationSummary() 'に表示されるようにビューを返します - ModelState.AddModelError(" "、"あなたのエラーメッセージ "); View(model); ' –

+0

あなたのプロパティをnullにする - int? AgeNotKnown'と 'DateTime?あなたが 'if(DateOfBirth.HasValue) 'でそれらをテストするように' DateOfBirth'を使用します。 –

+0

しかし、これを処理する正しい方法は、 'IClientValidatable'を実装するカスタム検証属性を作成するための正しい方法です。 ASP.NET MVC 3のパート2](http://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2 ) –

答えて

0

?は、そのデフォルト値I場合nullなりますnullableを意味し、 int?を使用してくださいTSのデフォルト値iがintを使用している場合、デフォルト値は、あなたがMVCで検証にModelStateを使用して、カスタム検証

@Html.ValidationMessage("validation") 
    @Html.EditorFor(model => model.DateOfBirth, new { htmlAttributes = new { @class = "form-control", @placeholder = "dd-mm-yyyy" } }) 
    @Html.EditorFor(model => model.AgeNotKnown, new { htmlAttributes = new { @class = "form-control", @placeholder = "Age in Years" } }) 

を追加することができ、検証について0

なりますnullになります私は、検証が表示される@Html.ValidationMessage("validation")を使用しましたメッセージ私はいずれかを返し、アクションであなたのaction

if (cls.DateOfBirth == null && cls.AgeNotKnown == null) 
      { 
       ModelState.AddModelError("validation","Please select one"); 
       return View(); 
      } 

ではconditioをチェックする場合両方がnullの場合、ビューに定義されているkeyvalidationの検証メッセージを含む同じビューに戻ります。

0

まずWindowsフォームに属しています。あなたがwanrしたい場合は、検証を使用する必要があります。私は好きですjquery validation

このようなコントロールを追加するには、コードにブレークポイントを置き、フォームからデータが来るようにします。この方法で、データをどのように制御したいかを決めることができます。

System.DateTime?これらの変数がnullでもかまいません。だからあなたはそれを比較しながら考慮する必要があります。

0

まず第一には、コントローラ

で見る

@model Models.ClientViewModel @*reference to your model usally create in Models folder*@ 

@Html.ValidationSummary() @* add this for validation summary displays here.*@ 

@Html.EditorFor(model => model.Date, new { htmlAttributes = new { @class = "form-control", @placeholder = "dd-mm-yyyy" } }) 
@Html.ValidationMessageFor(m => m.Date) 

@Html.EditorFor(model => model.Age, new { htmlAttributes = new { @class = "form-control", @placeholder = "Age in Years" } }) 
@Html.ValidationMessageFor(m => m.Age) 

@* Add jqueryval bundles which is created in app_start/BundleConfig *@ 
@section Scripts{ 
    @Scripts.Render("~/bundles/jqueryval") 
    } 

で検証

public class ClientViewModel 
{ 
    [Required, DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)] 
    public DateTime Date { get; set; } 

    [Required] 
    public int Age { get; set; } 
} 

この種のビューモデルを作成

//Change the name of PostMethod 
public ActionResult PostMethod(Models.ClientViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     // do your stuff 
    } 


    return View(); 
} 
関連する問題