Javascript 将值传递给控制器
我正在努力将我需要的所有数据传递给MVC中的控制器。代码如下:Javascript 将值传递给控制器,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,我正在努力将我需要的所有数据传递给MVC中的控制器。代码如下: <td><a href=@Url.Action("AddCourseToStudentPlan", "Users", new { courseID = c.CourseId, userID = user.UserId, semNum = num}) title="Add Course to Semester" >"Here"</a></td> 预期的输出是,当用户单击其中一个选
<td><a href=@Url.Action("AddCourseToStudentPlan", "Users", new {
courseID = c.CourseId, userID = user.UserId, semNum = num}) title="Add Course
to Semester" >"Here"</a></td>
预期的输出是,当用户单击其中一个选项卡时,他们会看到已添加课程的列表,并且可以通过单击代码前一代码块中的链接将课程添加到此选项卡。因此,单击选项卡应该更改@Url.Action()
方法中num
的值。但我当然不能这么做,因为C#是服务器端
所以问题是,在页面加载后,如何将一些变量semNum(由客户端确定)传递给
@Url.Action()
方法 有多种方法可以做到这一点。这是相当直观的,不会在VisualStudio中导致语法错误
//创建URL模板
//听起来semNum是唯一需要改变的值,
//但您可以创建具有多个占位符的模板。
//我们将semNum的值传递为零,这样路由在没有
//与实际学期数冲突。
var addUrlTemplate='@Url.Action(“AddCourseToStudentPlan”,“Users”,new{courseID=c.courseID,userID=user.userID,semNum=0}';
//为了简洁起见,这里使用jQuery(可以很好地与vanilla JS配合使用)
var addButton=$(“#添加url按钮”),
制表符=$(“制表符”);
添加按钮。单击(函数(){
//通过查询选项卡列表确定所选选项卡
var activeTab=tabs.find(“li.active”),
semesterNumber=activeTab.attr(“学期编号”);
//构造完整的URL。根据URL,您可能需要
//更聪明的正则表达式。确保不会意外
//替换错误的值。
var addUrl=addUrlTemplate.replace(/0$/,semesterNumber);
//根据需要导航
window.location.href=addUrl;
));
有多种方法可以做到这一点。这种方法非常直观,不会在Visual Studio中导致语法错误
//创建URL模板
//听起来semNum是唯一需要改变的值,
//但您可以创建具有多个占位符的模板。
//我们将semNum的值传递为零,这样路由在没有
//与实际学期数冲突。
var addUrlTemplate='@Url.Action(“AddCourseToStudentPlan”,“Users”,new{courseID=c.courseID,userID=user.userID,semNum=0}';
//为了简洁起见,这里使用jQuery(可以很好地与vanilla JS配合使用)
var addButton=$(“#添加url按钮”),
制表符=$(“制表符”);
添加按钮。单击(函数(){
//通过查询选项卡列表确定所选选项卡
var activeTab=tabs.find(“li.active”),
semesterNumber=activeTab.attr(“学期编号”);
//构造完整的URL。根据URL,您可能需要
//更聪明的正则表达式。确保不会意外
//替换错误的值。
var addUrl=addUrlTemplate.replace(/0$/,semesterNumber);
//根据需要导航
window.location.href=addUrl;
));
当用户单击链接时,您可以将最后的num
值发布到您的服务器,并在控制器中相应地重定向到该操作您的问题对我来说不是很清楚。但是无论如何,如果您的问题是Url.action,那么您可以跳过它。只需使用java脚本函数,在函数中执行任何您需要的操作d要计算数字并进行重定向,当用户单击链接时,您可以将最终的num
值发布到服务器,并在控制器中相应地重定向到该操作。我并不清楚您的问题。但是无论如何,如果您的问题是Url.action,那么您可以跳过它。只需使用java脚本函数我应该说得更清楚一些,但我写得很快;抱歉。courseID也是可变的,因为我希望用户也能够选择它。因此,以这种方式设置一个预制url是行不通的。不过,我想我可能能够修改这个解决方案可以让javascript函数生成正确的URL。非常感谢!我本应该更清楚,但我写得很快;很抱歉。courseID也是可变的,因为我希望用户也能够选择它。因此,以这种方式设置预制作的URL是不可行的。不过,我想我可能能够修改这个解决方案这样javascript函数就可以构建正确的URL了。非常感谢!
<ul class="nav nav-tabs" id="Semtabs">
@{ var year = plan.CatalogYear; }
<li class="active"><a href="#SEM1" onclick="StoreNum(1)" data-toggle="tab" aria-expanded="true">Fall @year</a></li>
@{ year += 1; }
<li class=""><a href="#SEM2" data-toggle="tab" aria-expanded="true">Spring @year</a></li>
<li class=""><a href="#SEM3" data-toggle="tab" aria-expanded="true">Fall 2014</a></li>
<li class=""><a href="#SEM4" data-toggle="tab" aria-expanded="true">Spring 2015</a></li>
<li class=""><a href="#SEM5" data-toggle="tab" aria-expanded="true">Fall 2015</a></li>
<li class=""><a href="#SEM6" data-toggle="tab" aria-expanded="true">Spring 2016</a></li>
<li class=""><a href="#SEM7" data-toggle="tab" aria-expanded="true">Fall 2016</a></li>
...