如何将TextBox中的值作为参数传递给Action

时间:2012-08-29 17:57:59

标签: c# asp.net-mvc razor

这就是我的想法,但当然它不起作用。

@{
    var textBoxData = form.find('input[name="textboxList"]').val();
 } 
<input type="button" value="Add"  title="Add"  onclick="location.href='@Url.Action("Create_Add", "Controller", new { textboxList = textBoxData })'" />

我该如何通过?控制器动作名称和参数是正确的。只是我不知道如何获得在文本框中输入的值...

我在表单中保存表单时遇到问题,所以有人建议使用此解决方案。代理代码是:

<firstForm>
   textboxfor Name
   dropdownfor DType

   If DTypeDDL value is "List" then
       <secondForm>
            textboxfor nameOfItem
            submitSecondForm (using that method i mentioned above)
       </secondForm>
   End If

   submitFirstForm
</firstForm>

我一直试图保存2个表格已经有一段时间了,但没有运气。这基本上是我的最后一招。

2 个答案:

答案 0 :(得分:4)

首先,你应该使用面向viewmodel的html文件,因为你使用的是MVC( Model ,View,Controller):

创建一个viewModel:

public class ExampleViewModel
{
    public ExampleViewModel()
    {
    }

    public virtual string TextBoxData { get; set; }
}

之后,使用viewmodel将您的html编码为模型:

@model Models.Views.ExampleViewModel
@using (Html.BeginForm())
{
<div class="editor-row">
        <div class="editor-label">
            @Html.LabelFor(model => model.TextBoxData)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.TextBoxData)
        </div>
</div>
<input type="submit" value="submit" />
}

和您的控制人员:

public ActionResult Example()
{
    ExampleViewModel model = new ExampleViewModel();
    return This.View(model);
}

[HttpPost]
public ActionResult Example(ExampleViewModel model)
{
    string infoEntered = model.TextBoxData;
    // Do something with infoEntered
}

希望这会对你有帮助!

答案 1 :(得分:2)

如果您使用的是视图模型,请查看以下答案:MVC sending data from View to Controller

如果您只想将输入中的数据发送到没有视图模型的操作方法,那么您也可以这样做:

查看:

@using (Html.BeginForm("Edit", "Some", FormMethod.Post))
{
    <input type="text" id="myTextBox" name="myTextBox" />
    <input type="submit" value="Submit" />
}

注意BeginForm行。第一个参数是我希望数据进入的Action,我将其命名为Edit。下一个参数是我正在使用的控制器,我将其命名为SomeController。在BeginForm中引用Controller时,不要将Controller位添加到名称中。第三个参数告诉表单在将数据发送到服务器时使用POST方法。

控制器:

public class SomeController
{
    [HttpPost]
    public ActionResult Edit(string myTextBox)
    {
        // Do what you want with your data here.
    }
}

如果您添加了更多输入(同样,此处没有视图模型),您可以将它们作为参数添加到Edit方法中。不过,这不是真正的首选方法。考虑使用视图模型。 ScottGu有一篇关于使用视图模型执行所需操作的精彩博文:

http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx