使用GET将ASP.NET值传递到外部web服务器iframe


Passing ASP.NET values into an external web servers iframe using GET

我会在这个问题上给予很大的奖励,因为我认为这是一项人们真正能够利用的服务。

我最近用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-->

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=测试

我想做的是,对于上面选中的每个复选框,都附加到&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=77777777&m=测试

如果我有另一个叫"John"的用户,电话号码是121212,那么:

http://webaddress.com/web/d.php?u=112233&p=1234&s=777777771212&m=测试

这可能吗?我该怎么做?

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

简单的答案是:

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

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

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

从那里,您可以像往常一样使用js遍历DOM。