0

良い一日。間違った方法かもしれませんが、それが最速の方法でした。そう:

IP アドレス (NetworkMask) を (整数) (mssql テーブルに格納) として格納するモデルがあります。次に、モデルにマップされていないフィールド (IPv4NetworkMask) を追加した IP アドレスの入力と修正を実装する必要があります。

    [NotMapped]
    public string IPv4NetworkMask{
        get{
            return ExtIP.LongToIPv4(NetworkMask);
        }
        set{
            NetworkMask=ExtIP.StringToIPv4(value);
        }
    }

そしてビューに:

        <div class="editor-label">
            @Html.LabelFor(model => model.NetworkMask)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.IPv4NetworkMask)
            @Html.ValidationMessageFor(model => model.IPv4NetworkMask)
        </div>

これですべてが正常に動作し、ユーザーが間違ったネットワーク アドレスを入力すると、StringToIPv4 内で例外が発生し、実行がコントローラーの外に出ます。

        if (!ModelState.IsValid)
            return View(NewModelObj);

しかし、クライアント側では、「値 'fdgdfgdf' は無効です」というメッセージが表示されました。このメッセージを別のものに変更するにはどうすればよいですか?

4

2 に答える 2

1

ビジネス レイヤーで実行する場合は、カスタム バリデーターを使用できます。

例えば:

public static ValidationResult ValidateIP(string inputIP)
{
   bool isValid = false;

    try {
        ExtIP.StringToIPv4(inputIP);
        isValid = true;
    }
    catch {
    }


    if (isValid)
    {
      return ValidationResult.Success;
    }
    else
    {
      return new ValidationResult(
          "Ip is not in a correct format.");
    }
  }
于 2012-09-19T10:58:54.487 に答える
0

最も簡単な方法を見つけました:

@Html.ValidationMessageFor(model => model.IPv4NetworkMask, "You have entered incorrect IP")
于 2012-09-19T09:23:11.103 に答える