0

我将在这个问题上投入巨资,因为我认为人们真的可以利用这项服务。

我最近使用 ASP.NET MVC/C# 编写了一个脚本。它很简单——它在网页上显示用户数据库的前端。整个代码可以在下面发布,它实际上并不需要阅读,因为它很简单,只是为了提供我正在做的事情的完整背景 -

这是该网站的主页:

@model IEnumerable<WhoIs.Models.Employee>
@{
    ViewBag.Title = "Contoso Employees";
}
@section featured {
    <section class="featured">
        <div class="content-wrapper">
            <hgroup class="title">
                <h1>@ViewBag.Title.</h1>
            </hgroup>
        </div>
    </section>
}

      <label for="filter">Enter employee details here : </label>
      <input type="text" name="filter" value="" id="filter" />

<h2><strong>Users</strong> (<a href="/home/create" style="color: blue;">create new</a>)</h2>
<br />

<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>Username</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.DomainAC</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>

  <div id="iframe2">
        <br />
        <iframe src="http://webaddress.com/web/login.htm" width="400" height="400" />
    </div>

这会呈现一个包含 Contoso 员工列表的简单页面,让管理员和用户自己能够编辑他们的详细信息。在此之后,我有一个我无法控制的远程 Web 服务器的 iframe。iframe 有一些输入框,它们通过 GET 将值传递给 PHP 函数。在上面选中复选框的地方,在我的 ASP.NET/MVC 中,我想将复选框的值(用户电话号码)传递到我的 url/get 命令中。

我怎样才能做到这一点 ?

为了完整起见,虽然无法编辑,但 iframe 的 HTML 如下所示:

echo "<body>";


echo "<form action=d.php method=get>";


echo "<input type=hidden name=u value=$u>"; <!--Username passed from previous page of iFrame-->
echo "<input type=hidden name=p value=$p>";<!--Password passed from previous page of iFrame-->
echo "<input type=text name=s value=$s>";<!--List of phone numbers-->

d.php 中的 PHP 简化为:

$u = $_GET['u'];
$p = $_GET['p'];
$s = $_GET['s'];

因此,如果我输入一些值,URL 将更改为:

http://webaddress.com/web/d.php?u=112233&p=1234&s=12345678910&m=test

我想要做的是,对于上面选择的每个复选框,在 &s 后面附加一个逗号,后跟所选用户所在行的电话号码。

因此,例如,如果我的 ASP.NET MVC 中有这个

Full Name    Branch    PhoneNo   DomainAC   Email   Checkbox
Test1   Test1   7777777   DOMAIN\TEST1   test1@test1.com   Ticked

我想运行http://webaddress.com/web/d.php?u=112233&p=1234&s=7777777&m=test

如果我有另一个名为“John”的用户,其电话号码为 121212,则:

http://webaddress.com/web/d.php?u=112233&p=1234&s=7777777,121212&m=test

这可能吗?我怎样才能做到这一点 ?

4

1 回答 1

1

如果我正确理解了您的问题,那么您正在尝试操作 iframe 中输入文本字段和复选框的值。

简单的答案是:

如果远程域与您的托管域不同,则无法直接使用 javascript 调用方法或访问 iframe 的内容文档。您可以使用跨文档消息传递,但这在这种情况下不起作用,因为您无法更改远程站点的源。

如果两者都在同一个域上,这可以通过使用 javascript 来完成。访问 iframe 文档的示例如下:

var iframe_doc = document.getElementById('iframe_id').contentWindow.document;

从那里你可以像往常一样使用 js 横穿 DOM。

于 2013-07-24T13:53:52.033 回答