相关疑难解决方法(0)

ASP .NET MVC在每个字段级别禁用客户端验证

我正在使用带有Data Annotations的ASP .NET MVC和jQuery validate插件.

有没有办法标记某个字段(或某些数据注释)应该只在服务器端验证?

我有一个带有屏蔽插件的电话号码字段,正则表达式验证器在用户端变得疯狂.正则表达式只是一个故障安全(如果有人决定破解javascript验证),所以我不需要它在客户端运行.但我仍然喜欢运行客户端的其他验证.

c# validation asp.net-mvc jquery jquery-validate

69
推荐指数
5
解决办法
7万
查看次数

MVC 3 jQuery验证/全局化数字/十进制字段

在Web.config文件中使用全球化culture ="da-DK"时,jQuery验证不起作用.

在丹麦,当我们为产品写价格时,我们使用符号19,95而不是美国19.95的方式,这给了我一个问题,我无法解决.

我已经启动了VS2010,新的MVC 3项目,添加了一个homeController,一个Product类和一个简单的标准编辑视图,错误已经存在.

产品类别:

public class Product
{
    public string name { get; set; }
    public string itemNo { get; set; }
    public decimal price { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

HomeController的:

public class homeController : Controller
{
    public ActionResult Index()
    {
        var product1 = new Product { name = "Testproduct", itemNo = "PRD-151541", price = 19 };
        return View(product1);
    }
}
Run Code Online (Sandbox Code Playgroud)

索引视图:

@model WebUI.DomainModel.Product

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Product</legend>

        <div class="editor-label"> …
Run Code Online (Sandbox Code Playgroud)

globalization validation jquery culture asp.net-mvc-3

66
推荐指数
3
解决办法
5万
查看次数

MVC 3客户端验证,模型绑定十进制值和文化(不同的小数分隔符)

我正在尝试进行客户端验证(模型绑定)以支持不同的文化,我发现了一个有趣的博客,我正在尝试实现该主题.

http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx

波科

  public class Jogador
  {
    public int ID { get; set; }

    public string Name { get; set; }

    public decimal Salary { get; set; }
  }
Run Code Online (Sandbox Code Playgroud)

我有自定义的DecimalModelBinder类

  public class DecimalModelBinder : IModelBinder
  {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
      ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
      ModelState modelState = new ModelState {Value = valueResult};

      object actualValue = null;
      try
      {
        actualValue = Convert.ToDecimal(valueResult.AttemptedValue, CultureInfo.CurrentCulture);
      }
      catch (FormatException e)
      {
        modelState.Errors.Add(e);
      }

      bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
      return actualValue;
    }
  }
Run Code Online (Sandbox Code Playgroud)

我的web.config:

<compilation …
Run Code Online (Sandbox Code Playgroud)

model asp.net-mvc-3

14
推荐指数
2
解决办法
1万
查看次数

C#MVC Controller无法从Ajax POST请求中获取十进制或双精度值

我的问题是,当我尝试通过ajax将double或decimal发送到我的C#MVC Controller时,该值始终为null.我可以将值作为字符串发送,我可以毫无问题地发送整数.为什么我不能发送带小数的值?当我检查从客户端发送的请求时,存在正确的值(表单数据是price=84.50).

错误:

参数字典包含非可空类型'System.Decimal'的参数'price'的空条目

HTML:

 <input type="number" step="1" class="form-control" name="price" id="price">
 <button type="button" class="btn btn-success">Send</button>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

$('.btn-success').click(function () {

    //var price = $('#price').val(); - Did not work
    //var price = Number($('#price').val()); Did not work
    var price = Number($('#price').val()).toFixed(2); // Does not work

    $.ajax({
        url: 'PriceFunction',
        type: 'POST',
        data: {
            price: price,
        }
    }).done(function () {

    }).fail(function () {
        console.log("Error in ajaxfunction!");
    });
});
Run Code Online (Sandbox Code Playgroud)

C#:

    [HttpPost]
    public void PriceFunction(decimal price)
    {
     // I have tried with decimal, double and …
Run Code Online (Sandbox Code Playgroud)

javascript c# ajax asp.net-mvc

12
推荐指数
2
解决办法
3万
查看次数

该字段必须是数字

我有这个领域:

public decimal Price { get; set; } 在数据库中它是十进制的(7,2).

视图:

 @Html.EditorFor(model => model.Price, 
                 new { htmlAttributes = new { @class = "form-control" } })
Run Code Online (Sandbox Code Playgroud)

如果我用逗号放一个值,MVC默认验证不接受,说:"The field must be a number".(我尝试使用正则表达式,但没办法)

例如: 5,00, 55,00 or 555,00

这个:

public DateTime date { get;set; }
Run Code Online (Sandbox Code Playgroud)

视图:

 @Html.EditorFor(model => model.Date, 
                 new { htmlAttributes = new { @class = "form-control" } })
Run Code Online (Sandbox Code Playgroud)

MVC默认验证不接受格式的日期dd/mm/yyyy,仅在mm/dd/yyyy.

例如: 13/02/2015, 15/06/2013, 25/08/2012

是全球化还是什么?我怎么解决这个问题?

c# globalization jquery datetime decimal

10
推荐指数
2
解决办法
2万
查看次数