我有一个简单的Window Forms应用程序,它打开一个带有set参数的网页。
该链接将用户发送到包含2个文本框字段和提交按钮的页面。
我正在尝试自动执行此过程,因此它会抓取参数值并将其放入文本框,然后单击“提交”。
这是我目前的Windows窗体代码:
using System;
using System.Windows.Forms;
using System.Diagnostics;
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
libLink.Links.Remove(libLink.Links[0]);
libLink.Links.Add(0, libLink.Text.Length,
"http://www.example.com/?UserName=value1&FirstName=value2");
}
private void libLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
ProcessStartInfo sInfo = new ProcessStartInfo(e.Link.LinkData.ToString());
Process.Start(sInfo);
}
}
}
如何创建一个脚本,使用URL中的参数填充两个文本框字段,然后提交表单?
这是我的HTML页面:
<form action="/send" method="post" novalidate="novalidate">
<input class="form-control" data-val="true" data-val-UserName="Wrong username" data-val-required="Enter a valid Username" id="Username" name="Username" placeholder="Username" type="text" value="">
<input class="form-control" id="FirstName" name="FirstName" placeholder="First Name" type="text" value="">
<button type="submit">Sign In</button>
</form>
编码相当新,所以我尽量保持代码的简单。
我查看了QueryStrings
,JavaScript
和Jquery
等可能的方法,但我不确定如何解决这个问题。
答案 0 :(得分:-1)
有几种方法可以做到这一点,但我会给你一个基本的演绎我将如何在javascript中用一些JQuery来做。
我们的网址是变量:
var url = "http://www.example.com/?UserName=value1&FirstName=value2"
var params_string = url.split("?")[1] //UserName=value1&FirstName=value2
所以首先我们将字符串拆分成如上所示的列表,该列表返回由“?”分隔的项目列表。字符,但我们只需要第二个项目(在索引1处),所以我们将[1]添加到最后只存储该位。
然后我们再次将其拆分以获得各个参数。
var params_string_list = params_string.split("&")
["UserName=value1","FirstName=value2"]
返回上面的列表,再次需要打破它,我会把它变成一个像这样的对象:
var params = {}
for(var i =0;i < params_string_list.length;i++ ){
var temp = params_string_list[i].split("=") // looks like ["UserName","value1"]
params[temp[0]]= temp[1]
} //params now looks like {"UserName":"value1","FirstName":"value2"}
因为这样可以轻松访问和使用。 然后我们可以执行以下操作来设置表单中的值:
if(params.UserName){
$('#Username').val( param.UserName );
}
if(params.FirstName){
$('#FirstName').val( param.FirstName );
}
如果要在那里检查值是否存在于对象中,那么我们就不会意外地将值发送到“undefined”。
希望这有帮助。