【问题标题】:How to show confirmation prompt from c#如何从 C# 显示确认提示
【发布时间】:2018-06-24 06:56:24
【问题描述】:

我想在单击按钮时打开一个确认窗口(如 javascript 中的确认()),如果它说是,我想做一些 c# 代码。 我该怎么做?

编辑:这是我的代码。

脚本:

<script type = "text/javascript">
    function Confirm() {
        var confirm_value = document.createElement("INPUT");
        confirm_value.type = "hidden";
        confirm_value.name = "confirm_value";
        if (confirm("Do you want to save data?")) {
            confirm_value.value = "Yes";
        } else {
            confirm_value.value = "No";
        }
        document.forms[0].appendChild(confirm_value);
    }
</script>

我的 HTML 代码的其余部分:

<asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="false" CssClass="Table">
<Columns>
    <asp:BoundField DataField="ID" HeaderText="Client ID" />
    <asp:BoundField DataField="Name" HeaderText="שם הלקוח" />
    <asp:BoundField DataField="PropertyLocation" HeaderText="מיקום הנכס" />
    <asp:BoundField DataField="PropertyType" HeaderText="סוג הנכס" />
    <asp:BoundField DataField="PropertyArea" HeaderText="שטח הנכס" />
    <asp:BoundField DataField="WorkType" HeaderText="סוג העבודה" />
    <asp:BoundField DataField="Remarks" HeaderText="שדה חופשי" />
    <asp:BoundField DataField="E-mail" HeaderText="מייל" />
    <asp:BoundField DataField="Phone" HeaderText="טלפון" />
    <asp:BoundField DataField="Password" HeaderText="סיסמא" />
    <asp:BoundField DataField="Status" HeaderText="סטטוס" />

    <asp:TemplateField>
        <ItemTemplate>


                <asp:ImageButton ID="btnDelete" runat="server"  ImageUrl="~/Images/ic_delete.png" OnClick="btnDelete_Click" ToolTip="מחיקה" OnClientClick="Confirm()" />
                <asp:ImageButton ID="btnTransfer" runat="server" ImageUrl="~/Images/ic_transfer.png" OnClick="btnTransfer_Click" ToolTip="העברה למעקב" />

        </ItemTemplate>
    </asp:TemplateField>
</Columns>
</asp:GridView> 

后面的我的 C# 代码(单击删除按钮时):

protected void btnDelete_Click(object sender, ImageClickEventArgs e)
{
    string confirmValue = Request.Form["confirm_value"];
    if (confirmValue == "Yes")
        Response.Redirect("Index.aspx", true);

    //connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True";
    //connection = new SqlConnection(connectionString);
    //commandString = "SELECT * FROM [Users]";
    //command = new SqlCommand(commandString, connection);
}

单击确认窗口中的选项之一时出现此错误:

回发或回调参数无效。使用配置或页面中的 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。

【问题讨论】:

  • 到目前为止您尝试了什么?我敢打赌网上有例子。基本上你想要一个带有表单的 HTML 模态对话框,在提交时会回发到服务器
  • 这里除了c#你还得做点什么。
  • 你想要它在网络表单中吗?
  • 当它出现在客户端浏览器上时,您将如何使用 C# 进行操作?
  • @Anand - ASP.NET 和 Windows 窗体完全不同。

标签: c# html asp.net


【解决方案1】:

首先你需要一个像这样的隐藏字段:

<input type="hidden" runat="server" id="AreYouSureBox" />

然后添加您的按钮:

<asp:Button runat="server" OnClientClick="AreYouSureBox()" OnClick="CSharpMethod" />

页面上对话框的 JavaScript:

function AreYouSureBox() {
    document.getElementById("areYouSure").value = confirm('Are you sure?');
}

然后用你的 C# 方法在你的后端运行这个:

protected void CSharpMethod(object sender, EventArgs E)
{
    var dialogResult = Boolean.Parse(areYouSure.Value);

    // Put your code here
}

【讨论】:

  • 更好的方法可能是仅在用户对确认回答是/确定时才回发。你可以通过从我认为的 JS 代码中返回 false 来做到这一点。
  • @ADyson 我已经尝试从该方法返回 false 但仍然收到此错误:/其他想法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 2016-09-24
  • 1970-01-01
相关资源
最近更新 更多