c# - 将参数发送到操作方法

标签 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.TEKST)
        </div>
         <div class="editor-field">
            @Html.TextBoxFor(model => model.TEKST)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

这会将我发送至:localhost:4470/Review/Add?Length=6 我真正想要的是这个网址:localhost:4470/Review/Add?tekst=sdfsdf

如何修改此代码,使其使用“tekst”作为参数而不是长度?并将文本框的内容作为值。

更新: 这是我的行动方法:

public ActionResult Create()
{
    return View();
}

public ActionResult Add(string tekst)
{
    ViewBag.test = tekst;
    return View();
}

在创建的 View 页面中,我想要一个带有文本框或文本区域的表单,该表单将操作发送到添加,文本框或文本区域的内容应位于操作方法“Add”的参数“tekst”中”

解决方案: 参见 CD Smith 的帖子

最佳答案

我不确定你的操作是什么样的,但只要它接受你的模型,你的模型中就有 TEKST 的值(value)。

如果您需要不同的东西,那么您的 View 也需要不同,您从 View 中发布模型,您不会通过发布 POST 来发送 GET 参数

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

更新

好吧,看看你的 Action ...你不需要修改你的 View ,你需要修改你的 Action ,试试这个,这会让你得到你想要的。

更改YourModelTypeHere以匹配您的真实模型类型

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

public ActionResult Add(string tekst) 
{
    ViewBag.test = tekst;
    return View();
}

您需要稍微修改一下您的 View - 从 BeginForm 标记中删除参数

@using (Html.BeginForm())

因此,Create 操作将呈现 Create View ,然后 POST 回具有 [HttpPost] 的 Create 方法 注释。然后,TEKST 的值将作为参数以 RedirectToAction 的形式发送到 Add 方法,并呈现 Add查看

关于c# - 将参数发送到操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10693594/

相关文章:

c# - 使用 C# 中的子查询 Access 数据库 INSERT

c# - 从服务器端在 asp.net 中将内容添加到 Bootstrap 模式中的 div

asp.net-mvc-3 - 如何从 Controller 的方法在新选项卡中打开cshtml文件?

c# - 单声道项目: How do I assign a C# generic list as a TableView's datasource?

c# - 由于默认值约束,Code First 迁移失败

c# - 制作 DAL 的最佳方法是什么?

asp.net-mvc - 流畅的 API 和数据注释

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

c# - View 未显示在 MVVM 中

c# - 将 Visual C++ 项目移植到 C#