【问题标题】:ASP.NET without runat="server"没有 runat="server" 的 ASP.NET
【发布时间】:2017-11-24 17:12:41
【问题描述】:

我必须使用 asp.net 网络表单创建一个简单的网站,但我必须不使用任何服务器控件,即runat="server"

我有以下几点:

HTML

<form method="post" action="">
    <label for="name">Name</label>
    <input id="name" name="name" type="text" />
    <input value="Save" type="submit" />
</form>

背后的代码

protected void myFunction()
{
    // do something
}

我目前将// do something 放入protected void Page_Load(object sender, EventArgs e) 函数中,但我想在单击保存按钮时调用它。但是,如果不使用runat="server",我不知道该怎么做。有没有办法做到这一点?

【问题讨论】:

  • 使用 JavaScript...
  • @DavidG - 这是唯一的方法吗?
  • 无论您做什么都需要某种形式的 JavaScript,甚至是 runat=server 控件。
  • 使用网络表单但拒绝runat="server" 就像说去皮划艇,但没有桨。听起来你应该使用 ASP.NET MVC
  • @DavidG - 很公平。谢谢

标签: c# asp.net webforms


【解决方案1】:

这个问题的真正答案在评论中:

使用webforms 但拒绝runat="server" 就像说去皮划艇,但没有桨。听起来你应该使用 ASP.NET MVC

我还会添加 ASP.Net Web Pages 以快速完成工作(注意:这意味着 ASP.Net Web Pages 用于“简单”网站 -你可以用它做任何你想做的事)。

我必须使用asp.net web forms创建一个简单的网站

但由于它“必须”是WebForms,它仍然可行。它可取吗? - 特别是在SPA/Javascript/XHR 上使用上述选项以及其他 cmets。

一天结束,它仍然是HTTP Requests, and Responses,所以标准的 HTML 表单输入和这样的工作就像在任何其他“框架”中一样:

  • “前端”(嗯,Page 在技术上是 control,但我们坚持使用 WebForms,所以这将是唯一的“服务器控制”):

    NoServerControls.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NoServerControls.aspx.cs" Inherits="WebForms.NoServerControls" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Humor Me Batman</title>
    </head>
        <body>
            <form method="post">
                <input type="text" name="wtf"/>
                <input type="submit" value="Batman"/>
            </form>
    
            <h1>It's "classic ASP" Batman! <%= echo %></h1>
       </body>
    </html>
    
  • “后端”(NoServerControls.aspx.cs 后面的代码)

    public partial class NoServerControls : System.Web.UI.Page
    {
    
        public string echo { get; set; }
    
        protected void Page_Load(object sender, EventArgs e)
        {
            //Trivial example: skipping all validation checks
            //It's either a GET or POST end of day
            if (Request.RequestType == "POST")
            {
                //Do something with data, just echoing it here
                echo = Request["wtf"];
            }
    
        }
    }
    

Hth.

蝙蝠侠:)

【讨论】:

    【解决方案2】:

    我有一个工作测试项目,请参考这个...

        <table>
                    <tr>
                        <td>Name </td>
                        <td>
                            <input type="text" id="custid" class="form-control custname" name="fullname" required />
                        </td>
                    </tr>
                    <tr>
                        <td>Designation </td>
                        <td>
                            <select id="loading" class="form-control loading">
                                <option value="0">Select </option>
                                <option value="HR">HR </option>
                                <option value="Engg">Engg </option>
                                <option value="Doctor">Doctor </option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>Mobile No. </td>
                        <td>
                            <input type="text" id="mobile" class="form-control mobile" onkeypress="return event.charCode >=48 && event.charCode <= 57" name="fullname" required />
                        </td>
                    </tr>
                    <tr>
                        <td>Email Id </td>
                        <td>
                            <input type="text" id="emailid" class="form-control emailid" name="fullname" required />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2" id="btn">
                            <button type="button" onsubmit="return validateForm()" class="btn btn-primary">Save</button>
                        </td>
                    </tr>
                </table>
    <script>
       $(document).ready(function () {
                $('#btn').click(function () {
                    var CustNamevalidate = $('.custname').val();
                    if (CustNamevalidate != '') {
                        Name = $(".custname").val();
                        Loading = $(".loading").val();
                        Mobile = $(".mobile").val();
                        EmailId = $(".emailid").val();
    
                        $.ajax({
                            type: "POST",
                            url: "test.aspx/Complextype",
                            data: JSON.stringify({
                                Nam: Name, Loadin: Loading, Mobil: Mobile, EmailI: EmailId
                            }),
                            contentType: "application/json; charset=utf-8",
                            datatype: "json"
                        }).done(function (result) {
                            console.log(result);
                            alert(JSON.stringify(result));
                        })
                    }
                    else {
                        alert('Please Enter Customer Name');
                    }
                });
            });
    
    
    
        </script>
    

    WEB 方法背后的代码

    [WebMethod]
        public static string Complextype(string Nam, string Loadin, string Mobil, string EmailI)
        {
            string Qtets = "Details are : Name =" + Nam + " And Designation is =" + Loadin + " And Mobileno=" + Mobil + " And EmailI=" + EmailI;
            //  ScriptManager.RegisterStartupScript(Page, typeof(Page), "test", "<script>alert('Sorry This Category Name Already Exist.');</script>", false);
    
            using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Constr"].ConnectionString))
            {
                SqlCommand cmd = new SqlCommand("usp_add_upd_emptb", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@EmpName", Nam);
                cmd.Parameters.AddWithValue("@EmpNo", Mobil);
                cmd.Parameters.AddWithValue("@Desig", Loadin);
                cmd.Parameters.AddWithValue("@Email", EmailI);
                cmd.Parameters.AddWithValue("@id", 0);
    
                con.Open();
                cmd.ExecuteNonQuery();
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }
                else
                {
                    con.Open();
                }
            }
            //SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Constr"].ConnectionString);
            //{
            //}
    
            return Qtets;
        }
    

    如果您不使用服务器控件来调用函数,则不能直接调用函数,您需要具有静态函数的 Web 服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 2012-03-11
      相关资源
      最近更新 更多