从视图中的asp.net按钮中的控制器调用方法

时间:2011-09-08 23:24:17

标签: c# asp.net-mvc asp.net-mvc-2

我是MVC技术的新手,我正在努力慢慢学习这项技术。 我有一个问题,我认为这很简单,但我找不到任何解决方案。 我有这个代码的视图:

<script runat="server">

    protected void btnSubmit_Click(object sender, EventArgs e)
    {

    }
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Home Page
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%: ViewData["Message"] %></h2>
    <form id="submitForm" runat="server">
    <p>Enter URL: <asp:TextBox ID="txtOne" runat="server" />&nbsp;<asp:Button 
            ID="btnSubmit" runat="server" onclick="btnSubmit_Click" Text="Submit" />
&nbsp;<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
            ControlToValidate="txtOne" Display="Dynamic" 
            ErrorMessage="Website URL not valid." 
            ValidationExpression="http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?"></asp:RegularExpressionValidator>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
            ControlToValidate="txtOne" Display="Dynamic" ErrorMessage="Please enter URL."></asp:RequiredFieldValidator>
    </p>
    </form>
</asp:Content>

我有控制器代码,我有一个方法:

 public ActionResult isValidURL(string url)
        {
            if (Regex.IsMatch(url, @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?"))
            {
            }
            return View();
        }

如何在单击按钮时调用isValidURL并传递参数? 在此先感谢Laziale

1 个答案:

答案 0 :(得分:0)

您应该使用简单的html或特殊HTML helpers,但不能使用从<asp:开始的asp.net控件

首先,您需要删除按钮单击处理程序。然后,您需要将带有url的文本框命名为“url”,它应该等于isValidURL()方法参数的名称。之后,请确保您的按钮正在将表单提交到以下网址{your controller name}/isValidURL。当您单击按钮时,表单将提交给服务器,您的isValidURL方法将被执行。

幕后发生的事情

非常粗略,但基本了解正在发生的事情。 ASP.NET MVC使用表单和url参数的命名约定。如果您通过GET或POST发送HTTP请求,则ASP.NET MVC使用您已注册的路由规则对其进行解析,运行您的控制器和相应的操作,例如:您使用GET向"http:/localhost/controller1/Action1?x=8"发布了http请求。在这种情况下,ASP.NET MVC将尝试运行Controller1,然后使用以下签名“Action(int x)”运行其名为Action1的方法。