【问题标题】:How can I Get a C# Variable assigned based on click with WebMatrix razor?如何获取基于单击 WebMatrix 剃须刀分配的 C# 变量?
【发布时间】:2012-09-27 21:59:08
【问题描述】:

我无法找到解决当前情况的方法:

我需要为 C# 变量分配一个动态值,因为 C# 是查询我的数据库的对象。

该值必须与他们选择(点击等)的 sql 查询条目的主键 ID 匹配。

根据他们的搜索,我永远不知道会有多少条目(或哪些条目)。

至此,他们把自己的搜索条件放到了一个表单中,动态查询数据库,结果逐行显示。

现在,我需要一个按钮(或某种用户选择的界面),它可以告诉我他们选择编辑哪个条目,然后将数据库中该条目的值带到查看和编辑页面。

我可以做所有这些,除了,当 C# 已经完成呈现页面时,当用户可以提供任何输入时,我如何知道他们单击(或以其他方式选择)哪个条目? JavaScript 不能查询数据库,这怎么可能呢?请记住,我知道 jQuery,但不知道任何 AJAX。

我正在使用 WebMatrix C# razor、html、css、JavaScript、SQL Server Compact 和 jQuery(我确定是标准 WebMatrix 设置)。

非常感谢任何帮助。

【问题讨论】:

  • 您是否正在寻找类似article 中解释的解决方案?
  • 实际上,是的,这肯定会起作用,非常感谢您!但是,当我收到您的评论时,我突然想到了一个想法,而且效果也很好。我真的很想将我的解决方案分享给任何可能使用它的人,所以我相信我会回答我自己的问题。

标签: c# database razor webmatrix


【解决方案1】:

好的,正如 GmG 所评论的那样,webGrid 旨在帮助解决这个问题,但是,如果您不想使用该答案并构建自己的答案,那么我发现这对我来说非常有效(对我来说甚至更好具体情况):

在@foreach(var row in db.Query("queryString")) 循环中,我(在汇总信息中)添加了一个表单,以便找到的每个条目都有自己的表单。在表单中,我只放置了一个提交按钮和一个隐藏的输入文本元素,在“name”属性中设置了任何给定的指定名称(即,name="inputName")。这个隐藏元素的值是@row.EntryID(即value="@row.EntryID"),它会用在数据库中找到的条目的唯一主键来绘制这个字段的值。在该页面中将表单操作设置为另一个文件(即 action="/somefile.cshtml"),我只是从隐藏的输入文本字段中提取了 EntryID(即 var someVariable = Request.Form["inputName"]; )。由于请求只会从提交它的任何表单中获取,并且隐藏输入字段的值是动态绘制的,因此我总是可以获取他们单击按钮的条目的 ID。

我希望这可以帮助任何想要在不使用 WebGrid 帮助器的情况下执行类似功能的人(尽管您可能想要,我的意思是它的用途)。然而,对于像我这样的一些人,我们可能知道如何以这种方式更好地控制它(因为我们可能不知道杰克关于帮助程序以及如何调整其中所需的微小配置来以这种方式显示、样式和控制 Web 界面我们想要)。

无论如何,再次希望这对某人有所帮助。

【讨论】:

    【解决方案2】:

    已经很晚了,但它可能会帮助其他人:

    foreach 示例

                    @foreach(var row in sCustomersHO){
                    <tr>
                        <td><a href="~/Admin/ManageCustomersCH?id=@row.CustId">@row.Account</a></td>
                        <td>@row.CustomerName</td>
                        <td>@row.RepName</td>
                        <td>@row.CustomerTypeDescription</td>
                        <td>@row.StopStatus</td>
                        <td><a href="~/Admin/DeleteCustomerHO?id=@row.CustId">Delete</a></td>
                    </tr>
                }
    

    网格示例:

                @gAllReports.GetHtml(
                tableStyle: "grid",
                headerStyle: "head",
                alternatingRowStyle: "alt",
                columns: gAllReports.Columns(
                    gAllReports.Column("Name"),
                    gAllReports.Column("Description", format: @<textarea disabled>@item.Description</textarea>),
                    gAllReports.Column("Action", format: @<form method="post">@AntiForgery.GetHtml()<input type="hidden" id="UserId" name="UserId" value="@UserId" /><input type="hidden" id="ReportId" name="ReportId" value="@item.ReportId" /><button type="submit" name="action" value="add">Add</button></form>)
                )
            )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      相关资源
      最近更新 更多