C# 如何从操作提交带有隐藏字段的表单?
假设我有经典asp中的以下表单:C# 如何从操作提交带有隐藏字段的表单?,c#,asp.net,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc 3,假设我有经典asp中的以下表单: <form name="impdata" id="impdata" method="POST" action="http://www.bob.com/dologin.asp"> <input type="hidden" value="" id="txtName" name="txtName" /> </form> 解决方案: 似乎从控制器执行此操作并不容易,因此我最终使用jQuery。该操作返回一个JsonResult。 比
<form name="impdata" id="impdata" method="POST" action="http://www.bob.com/dologin.asp">
<input type="hidden" value="" id="txtName" name="txtName" />
</form>
解决方案:
似乎从控制器执行此操作并不容易,因此我最终使用jQuery。该操作返回一个JsonResult。
比如:
<button id="Impersonate" class="button" onclick="Impersonate()">Impersonate!</button>
<form name="impdata" id="impersonateForm" action="http://www.bob.com/dologin.asp">
<input type="hidden" value="" id="txtName" name="txtName" />
</form>
function Impersonate() {
$.ajax({
type: 'POST',
asynch: false,
url: '@Url.Action("Impersonate", "Index")',
data:
{
name: $('#txtName').val()
},
success: function (data) {
$('#txtName').val(data.Name);
$('#impersonateForm').submit();
}
});
模拟!
函数模拟(){
$.ajax({
键入:“POST”,
asynch:false,
url:'@url.Action(“模拟”、“索引”),
数据:
{
名称:$('#txtName').val()
},
成功:函数(数据){
$('#txtName').val(data.Name);
$(“#impersonateForm”).submit();
}
});
似乎工作得很好…从一篇文章重定向到一篇文章相当困难(依赖于HTTP状态码,没有通用支持),从GET也不可能 最简单的解决方案可能是在发布(新)表单的结果上添加一点JavaScript
因此,您的action方法返回一个视图,其中包含必要的数据(通过模型从控制器传递),其中将包括JavaScript。您可以尝试类似的方法(使用jquery):
我不确定我是否遵循-你的意思是在viewmodel上返回javascript代码作为字符串属性,以创建和提交一个新表单吗?你能举个例子吗?@woggles:example:不快,但是DOM的表单
接口有一个提交
方法。我假设模型上有一个布尔值,导致视图添加t他使用了脚本,但控制器中的字符串也可以。你能检查我上面的解决方案吗…这大概是你的想法吗?@woggles你没有提供足够的详细信息说明为什么需要提交以执行有用的审阅。我只需填充字段,然后$(“#impersonateForm”).submit()
…但您似乎不想只重定向到帖子,而是想做更多的事情。这对您有帮助吗?@Mark我想我将使用上面的jQuery和ajax解决方案。从控制器上执行此操作似乎很困难。
[HttpPost]
public ActionResult Impersonate(string txtName)
{
txtName = txtName + "this string needs to be modified and then submitted as a hidden field";
//Redirect won't work needs the hidden field
//return Redirect("http://www.bob.com/dologin.asp");
}
<button id="Impersonate" class="button" onclick="Impersonate()">Impersonate!</button>
<form name="impdata" id="impersonateForm" action="http://www.bob.com/dologin.asp">
<input type="hidden" value="" id="txtName" name="txtName" />
</form>
function Impersonate() {
$.ajax({
type: 'POST',
asynch: false,
url: '@Url.Action("Impersonate", "Index")',
data:
{
name: $('#txtName').val()
},
success: function (data) {
$('#txtName').val(data.Name);
$('#impersonateForm').submit();
}
});
<input id="Impersonate" class="button" type="submit" value="Impersonate" onclick="$('#txtName').val('new value')" />