0

我有一个用 C#/Razor 编写的网页。我正在打印此页面上数据库中的所有值,如下所示:

<div style="min-height: 150px; font-size: 1.25em">
    <div style="margin-bottom: .5em">
        <table>
            <thead>
                <tr>
                    <th>Name</th>
                    <th>Branch</th>
                    <th>Phone No.</th>
                    <th>Extension</th>
                    <th>Email</th>
                </tr>
            </thead>
            <tbody>
                @foreach (var prod in Model)
                {
                    <tr>
                        <td>@prod.FullName</td>
                        <td>@prod.Branch</td>
                        <td>@prod.PhoneNo</td>
                        <td>@prod.Extension</td>
                        <td>@prod.Email</td>
                        @if (User.IsInRole(@"Admins") || User.Identity.Name == prod.DomainAC)
                        {
                            <td><a href="/home/edit/@prod.Id"  style="color: blue;">edit</a></td>
                        }
                        else
                        {
                            <td>User => @User.ToString()</td>   
                        }
                        <td>
                            <input type="checkbox" name="message" value="@prod.PhoneNo">Message<br>
                        </td>
                    </tr>
                }
            </tbody>
        </table>
    </div>
</div>

这可以很好地显示他们的信息。我现在想做的事情有点困难。

在此下方,我有一个包含用户名、密码和消息的表单。使用此表单,我希望在提交时具有这样的行为,它将获取表单输入框中的值和上述 C#,构造一个链接,导航到该链接并打印服务器的响应

所以我有 :

@{if (IsPost)
  {
     //handle and print response
  }
  else
  {
    <form method="post" action="">
        Username:<br />
        <input type="text" name="u" /><br />
        Password<br />
        <input type="text" name="p" /><br />
        <br />
        Password<br />
        <textarea name="m" cols="25" rows="5">
        Enter your comments here...
        </textarea><br>
        <br />
        <input type="submit" value="Submit" class="submit" />//when this is clicked, construct url and navigate to it.
    </form>
   }
}

我想从此表单构造的 URL 是:

http://webaddress.com/web/d.php?u=<Username entered by user>&p=<Password entered by user>&s=<List of Phone Numbers from the C# above where the checkbox is selected, comma separated>&m=<Comment submitted by user>

所以,如果我的名字是“John”,密码是“Password1”,评论是“Test”,并且我为电话号码“12345678”的用户选择了一个复选框,我将导航到的 URL 是:

http://webaddress.com/web/d.php?u=John&p=Password1&s=12345678&m=Test

理想情况下,我想<div>在同一父网页上打印网页的响应,而不是在可能的情况下转到新网页。

我不知道从哪里开始,如何做,或者即使这是可能的。谁能帮帮我?

更新 :

尝试这个不会提醒我的 JQuery,所以我无法调试:

    <script>
        $("#thebutton").click(function() {
            var form = $(document.getElementById('FormID'));
            var urlToConstruct = 'http://webaddress.com/web/d.php';
            urlToConstruct += '?u=' + form.find('#u').val();
            urlToConstruct += '&p=' + form.find('#p').val();
            ('#employeeTable tbody tr').has(':checkbox:checked').find('td:eq(2)').each(function() {
                urlToConstruct.append($(this).text());
                alert(urlToConstruct);
            })
        });
 </script>
4

1 回答 1

1
$("#SubmitButtonID").click(function() {
    var form = $(document.getElementById('FormID');
    var urlToConstruct = 'http://webaddress.com/web/d.php';
    urlToConstruct += '?u=' + form.find('#iDoFInputControl1').val();
    urlToConstruct += '&p=' + form.find('#iDoFInputControl2').val();
    form.submit();
});

此示例使用 jQuery,一个 javascript 库 (jquery.com),我使用 getElementById 来查找您的表单,比本机 jQuery() 选择器更快。此示例假定您的所有控件都在您的表单中(但如果不是,则不会是火车粉碎,只是不能使用(jQuery obj).find)。

.val()获取值,它也应该适用于复选框,但如果没有,使用 jquery 从复选框中获取值的快速谷歌搜索将返回大量结果。

ps 我大部分是徒手编写的,没有在浏览器中检查它以确保它完全正确。

更新...回答您的后续问题...

如果您使用的是 mvc(假设您使用的是 razor),您可以在控制器内部使用Request.Params["urlParameter"]Request.Form["controlID"]访问您从浏览器收到的内容。然后,一旦您获得了这些值,您应该将它们放在“ViewBag”(ViewBag.yourVariableHere="val")中,以便它们可以在您的视图中通过 访问@ViewBag.yourVariableHere,或者您可以在模型中包含所需的数据,这些数据也可以在您的视图中访问

于 2013-07-24T08:34:50.477 回答