1

私はこれを持っています:

@Html.TextBoxFor(cModel => cModel.Value, new { id = "txtbLimit", @type = "int" })

そして、ユーザーがそこに入れるものが整数であることを確認したいと思います。

どうやってやるの?

編集:モデルの値でこのテキストボックスを解析しないので、モデルの検証は私が望むものではありません

EDIT2:

モデル:

public class StorageConfigurationModel
{
    [Required]
    public int QueueMonitorConfigurationsID { get; set; }
    [Required]
    public PathType QueueMonitorConfigTypeName { get; set; }
    [Required]
    public string Location { get; set; }
    [Required]
    public UnitType QueueMonitorValueTypeName { get; set; }
    [Required]
    public ThresholdType Threshold { get; set; }
    [Required]
    [RegularExpression(@"\d*")]
    public int Value { get; set; }
}

public enum PathType
{
    Path
}
public enum UnitType
{
    MB, GB, TB, Files, Percentage
}
public enum ThresholdType
{
    Upper, Lower
}

解析機能:

    private static StorageConfigurationModel BindToModel(int id, string pathType, string threshold, string valueType, string location, int limit)
    {
        return new StorageConfigurationModel
        {
            QueueMonitorConfigurationsID = id,
            QueueMonitorConfigTypeName = (PathType)Enum.Parse(typeof(PathType), pathType),
            Location = Convert.ToString(location.Trim()),
            Value = Convert.ToInt32(limit),
            QueueMonitorValueTypeName = (UnitType)Enum.Parse(typeof(UnitType), valueType),
            Threshold = (ThresholdType)Enum.Parse(typeof(ThresholdType), threshold)
        };
    }

したがって、すべてのデータをビューに入れて [追加] をクリックしても、何もトリガーされません。

これで、モデルバインダーを呼び出す関数を呼び出します。

        $.post('@Url.Action("AddUpdateConfigs")',
            {id: @Model.QueueMonitorConfigurationsID , pathType: $('#ddlConfigTypeName').val(), threshold:$('#ddlThreshold').val(), valueType:$('#ddlValueTypeName').val(), location: $('#txtbLocation').val(), limit: $('#txtbLimit').val(), config: $('#NewOrUpdate').val() },
            function(data){
                if (!data.Success){
                    alert(data.Description);
                }
                else{
                    //$('#gridView').load('/Storage/gvConfigurations');
                    $.get('@Url.Action("gvConfigurations", "Storage")',null,function(data){$('#gridView').html(data);},'html');
                }
            },'json');
4

2 に答える 2

4

モデルで、この属性を の先頭に追加しますValue

[RegularExpression(@"(\d+)")]

MVC は、コントローラーに戻る前にサーバー側で無効に設定しPOSTます。その後、適切に簡単に処理できます。

JavaScript で使用する場合は、次の方法を使用します。

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

onkeydownそして、次のようなイベントでそれを実行できます。

onkeydown="return isNumber(this.value);"

編集

そこにエラーメッセージを表示するには、次のようなことができるはずです:

[RegularExpression(@"(\d+)", ErrorMessage="Please enter numeric values only.")]
于 2013-06-11T12:38:51.683 に答える
-1

Model クラスを直接使用して情報を post アクションに渡すのではなく、ユーザー インターフェイス要素と一致する ViewModel クラスを使用できると思います。

例えば:

public class StorageConfigurationViewModel
{
[Required()]
public int pathType {get;set;}
[Required()]
public int threshold {get;set;}
[Required()]
public int valueType {get;set;}
[Required()]
public int location {get;set;}
[Required()]
public int limit {get;set;}
[Required()]
public int config {get;set;}
}
于 2013-06-11T20:34:36.180 に答える