我在ASP.NET MVC的TextBox
中有Button和View
。现在,如何在单击此按钮后将Button的某些值(例如string x="1";
)发送到TextBox?我有这个值显示在这样的url地址:/local:xxxxx/Calculator?TextBox=&Command=1
点击按钮后值为1,但我不知道如何将此值发送到TextBox并转换为int并放入一些int变量。我的观点看起来像这样:
<input type="text" name="TextBox" value=""/>
<table>
<tr>
<td><button type="submit" name="Command" value="7">7</button></td>
</tr>
我的模型看起来像这样:
public class CModel
{
public string Command { get; set; }
public string TextBox { get; set; }
}
和控制器:
[HttpGet]
public ActionResult Index()
{
CModel model = new CModel();
return View(model);
}
[HttpPost]
public ActionResult Index(CModel model)
{
if (model.Command == "1")
{
//do this and this
}
else if(model.Command == "2")
{
//do this and this
}
else if....{}
return View(model);
}
有没有办法让这个值“1”并发送到TextBox,然后发送到某个int类型的变量来保存它?怎么做?
答案 0 :(得分:4)
你混淆了很多东西。
首先,如果你想要的只是在按钮点击上设置文本框的文本,只需使用javascript即。
假设你的按钮是这样的:
<input type="button" id="btnSetText" value="set Text" onclick="setText" />
那么你的js脚本应该是:
<script>
function setText(){
document.getElementById('txtBoxId').value = 'watever';
}
</script>
现在,如果你想在给定的控制器中向actionmethod发送一个值而不是这样:
<script>
window.href.location ='/ControllerName/ActionMethod?value=' + 1;
</script>
其中ActionMethod是这样的:
public ActionResult ActionMethod(string value)
{
//process value
}
现在,如果您只想访问表单上保留的所有控件值,我建议您使用@Html.BeginForm
,并提供适当的操作。因此,当您按下保留在其中的提交按钮时,它将使用formcollection中的所有@Html
控件来提升操作中指定的控制器,即
@using (Html.BeginForm())
{
@Html.ValidationSummary(true, "Login failed. Check your login details.");
<div>
<fieldset>
<legend>Login</legend>
<div class="editor-label">
@Html.LabelFor(u => u.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(u => u.UserName)
@Html.ValidationMessageFor(u => u.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(u => u.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(u => u.Password)
@Html.ValidationMessageFor(u => u.Password)
</div>
<div class="editor-label">
@Html.CheckBoxFor(u => u.RememberMe)
@Html.LabelFor(u => u.RememberMe)
</div>
<input type="submit" value="Log In" />
</fieldset>
</div>
}
你的ActionMethod就像:
[HttpPost]
public ActionResult Login(Models.User user)
{
if (ModelState.IsValid)
{
if (user.IsValid(user.UserName, user.Password))
{
FormsAuthentication.SetAuthCookie(user.UserName, user.RememberMe);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", "Login data is incorrect!");
}
}
return View(user);
}
答案 1 :(得分:0)
//this takes request parameters only from the query string
Request.QueryString["Command"];
在您的情况下,上述方法将有效。您可以将以上代码放在.cs页面中的Page Load事件中。
//this one works for bot - form and query string
Request["Command"];