C# 将参数发送到操作方法

C# 将参数发送到操作方法,c#,asp.net,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc 3,Razor,目前我有以下代码: @using (Html.BeginForm("Add", "Review", "Review")) { @Html.ValidationSummary(true) <fieldset> <legend>Review</legend> <div class="editor-label"> @Html.LabelFor(model => model.T

目前我有以下代码:

@using (Html.BeginForm("Add", "Review", "Review"))
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Review</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.TEKST)
        </div>
         <div class="editor-field">
            @Html.TextBoxFor(model => model.TEKST)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}
在Create的视图页面中,我希望有一个表单,带有一个textbox或textarea,它发送一个要添加的操作,textbox或textarea的内容应该在操作方法“Add”的参数“tekst”中

解决方案: 请参阅CD Smith的帖子,我不确定“Length=6”是从哪里来的,因为我看不出您的代码的哪一部分会创建该URL

在我看来,您需要GET请求,但是(默认情况下)表单将导致POST请求。根据您的代码,我希望生成的路由是“localhost:4470/Review/Add”。无论表单的内容是什么,都将作为表单数据发送

因此,在控制器中,如果您的操作方法如下所示:

[HttpPost]
[ActionName("Add")]
public ActionResult AddViaPost(string tekst)
{
    // do something with tekst
}

然后,您应该将文本框的值正确地发布到控制器上。

我不确定您的操作是什么样子的,但只要它接受您的模型,您的模型中就有TEKST的值

如果您需要一些不同的东西,那么您的视图也需要不同,您从视图发布模型,而不是通过发布来发送GET参数

您是否有当前将TEKST作为参数的操作

更新 好的,看看你的行动。。。你不需要修改你的视图,你需要修改你的操作,试试这个,这会得到你想要的

在此处更改
yourmodeltype
以匹配您的实际型号

[HttpPost]
public ActionResult Create(YourModelTypeHere model)
{
    return RedirectToAction("Add", new { tekst = model.tekst });
}

public ActionResult Add(string tekst) 
{
    ViewBag.test = tekst;
    return View();
}
您只需要稍微修改一下视图-从BeginForm标记中删除参数

@using (Html.BeginForm())

因此
Create
操作将呈现
Create
视图,然后发回具有
[HttpPost]
注释的
Create
方法。然后,
TEKST
的值将作为参数发送到
Add
方法,作为
RedirectToAction
并呈现
Add
视图

您是否可以更清楚一点??请注意,该代码当前位于Create.cshtml中,将从controller:Review,action:Create调用。在这里,我想要一个名为“tekst”的输入,并将该参数发送给controllerreview,action:Add(stringtekst){这里是将txt添加到db的逻辑,它已经在工作了}。通过这段代码,它将参数长度和值6发送到action Add,它应该发送paramater tekst和value:inputShow我们您的操作方法,以便我们可以更清楚地帮助您非常感谢!这就解决了我的问题,这正是我所需要的。@user1408786太好了,你介意把答案打勾吗?
@using (Html.BeginForm())