Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从操作提交带有隐藏字段的表单?_C#_Asp.net_Asp.net Mvc 3 - Fatal编程技术网

C# 如何从操作提交带有隐藏字段的表单?

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。 比

假设我有经典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。 比如:

<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')" />