首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义验证属性不适用于按钮单击

自定义验证属性不适用于按钮单击
EN

Stack Overflow用户
提问于 2013-07-29 11:07:43
回答 2查看 734关注 0票数 0

我已经创建了一个函数,用于根据下拉列表中的选择对文本框输入的值进行验证。如果下拉列表选择的项目是..suppose ,那么文本框中输入的值必须在10 t0 20之间,像这样,我又得到了两个验证。为此,我有一个文本框、一个下拉列表和一个按钮。

当我在文本框中输入值为30,并选择下拉列表项作为“数量”,然后单击submit按钮时,视图将不会显示任何错误消息,并且(如果我将textbox作为空,然后按submit按钮,它应该显示错误消息,但它没有显示)(我已经编写了用于在服务器端验证这些错误的自定义函数),我在postValues方法上放置了一个断点,但它没有命中.

为此,我已经这样做了(控制器部分)

代码语言:javascript
运行
复制
  public class CrossFieldsTxtboxesController : Controller
  {
        public ActionResult Index()
        {
            var itemsforDropdown = new List<SelectListItem> {             
                new SelectListItem{ Text = "Amount" , Value = "Amount"},
                new SelectListItem{Text= "Pound", Value ="Pound"},
                new SelectListItem {Text ="Percent", Value ="percent"}            
            };
            ViewData["Listitems"] = itemsforDropdown;
            return View("DdlCrossFields");
        }
        [HttpPost]
        public ActionResult PostValues(CrossFieldValidation model)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }
            else
            {
                return RedirectToAction("DdlCrossFields");                
            }            
        }    
    }

这是我的观点

代码语言:javascript
运行
复制
@model MvcSampleApplication.Models.CrossFieldValidation
@{
    ViewBag.Title = "DdlCrossFields";
}    
<h2>DdlCrossFields</h2>
@using (Html.BeginForm())
{   
    <div class ="editor-field">
      @Html.TextBoxFor(m => m.TxtCrossField)
       @Html.ValidationMessageFor(m=>m.TxtCrossField)
    </div>
    @Html.DropDownList("Listitems",ViewData["Listitems"] as SelectList)
    <input id="PostValues" type="Submit" value="PostValues" />
}

这是我的模型

代码语言:javascript
运行
复制
public class CrossFieldValidation
{        
    public string DDlList1
    { get; set; }

    [Required(ErrorMessage = "Quantity is required")]
    [Display(Name= "Quantity:")]
    [ValueMustbeInRange]
    [NumericAttributes] 
    public string TxtCrossField
    { get; set; }
}

如果有人知道它为什么不适用于按钮点击,任何建议也会非常感谢。

EN

Stack Overflow用户

发布于 2013-07-29 11:23:52

我看不出你在哪里调用方法,当你做后-你有一个javscript点击处理程序吗?

您需要在您的Html.BeginForm()中拥有您想要访问的方法和控制器,或者您的视图中可以有如下所示:

代码语言:javascript
运行
复制
 @Html.ActionLink("Post Values", "PostValues", "CrossFieldsTxtboxesController", null, new { @class = "postValuesButton", onclick = "return false;" })
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17922457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档