目前我有这个代码:
@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/