我有一个非常简单的视图,无法弄清楚为什么我的文本框值没有传递给我的控制器。 actionlink是否可以为控制器提供参数?
@{
ViewBag.Title = "Home Page";
}
@using (Html.BeginForm("LookupEmployee", "Home")) {
<div class="jumbotron">
<h2>Personnel System</h2><br />
<p>ID: <input type="text" id=employeeID name="employeeID" /></p>
@Html.ActionLink("Your Leave Balance", "LeaveBalance", "Home", null, new { @class = "btn btn-primary btn-large" })
</div>
}
<div class="row">
</div>
我的HomeController获取参数并填充数据集。我对一个值进行了硬编码,并验证了此代码的工作原理:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult LeaveBalance(string employeeID)
{
//ViewBag.Message = "Your application description page.";
if (!String.IsNullOrEmpty(employeeID))
{
DataSet gotData;
LeaveRequestWCF myDataModel = new LeaveRequestWCF();
gotData = myDataModel.GetTheData(Convert.ToInt32(employeeID));
myDataModel.theModelSet = gotData;
return View(myDataModel);
}
return View();
}
}
有什么建议吗?正如您所知,我是MVC的新手,并试图摆脱网络表单。
答案 0 :(得分:1)
选项1:
您正在使用Html.ActionLink发布表单,由于Html.ActionLinks呈现为Anchor标记,因此无法完成。除非我们显式处理他们的JQuery click事件,否则Anchor标签会产生GET请求。使用“提交”按钮发布表单以执行适当的控制器操作。所以不是 -
@ Html.ActionLink(&#34;你的休假余额&#34;,&#34; LeaveBalance&#34;,&#34; Home&#34;,null, 新的{@class =&#34; btn btn-primary btn-large&#34; })
去 -
<input type="submit" class="SomeClass" value="Submit" />
选项2:
您还可以使用AJAX POST使用JQuery click事件来发布锚标记以发布表单,一旦获得结果,您就可以进行客户端重定向。
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(document).ready(function() {
$("#solTitle a").click(function() {
var data = {
"Id": $("#TextId").val()
};
$.ajax({
type: "POST",
url: "http://localhost:23133/api/values",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
processData: true,
success: function (data, status, jqXHR) {
console.log(data);
console.log(status);
console.log(jqXHR);
alert("success..." + data);
// handle redirection here
},
error: function (xhr) {
alert(xhr.responseText);
}
});
});
});
</script>
答案 1 :(得分:0)
ActionLink在页面上创建一个简单的<a href />
,它会向服务器发送get
请求。
您需要一个提交按钮,因此您的表单会获得表单输入post
。使用:
<button type="submit">Your Leave Balance</button>