我的情况就像,我有两个不同的视图和一个共同的控制器(及其方法)。一个是创建项目视图,另一个是编辑项目视图。我的控制器有一个叫做细节的方法。现在我想通知控制器我正在创建或编辑表单。在此基础上,我的整个代码将执行。
CSHTML
<a href="..\example\details" id="iCreate">Create</a>
<script>
$( document ).ready(function() {
$('#iCreate').click(function(){
@Session["createMode"] = true; // Not working...
@ViewBag["createMode"] = true; // Not working...
});
});
</script>
控制器
public ActionResult details()
{
// How to get data here???
if(createMode){
}
else{
}
}
要实现这一方法,请在querystring
中传递参数,但我不想这样做。
那么还有其他方法可以将数据从View传递给Controller吗?
提前致谢...
答案 0 :(得分:1)
关于
@Session["createMode"] = true; // Not working...
@ViewBag["createMode"] = true; // Not working...
这不起作用,因为@Session和@ViewBag是服务器端变量,显然无法通过JavaScript(客户端)进行更改。
您可以使用
实现你想要的目标
答案 1 :(得分:0)
做这样的事情
HTML中的
<input type="hidden" id="createMode" value="False" />
的javascript:
$( document ).ready(function() {
$('#iCreate').click(function(){
$('#createMode').val('True');
});
});
控制器:
public void details(bool createMode)
{
//createMode will automatically be passed
if(createMode){
}
else{
}
}
答案 2 :(得分:0)
一种简单的方法是使用Ajax
$( document ).ready(function() {
$('#iCreate').click(function(){
$.ajax({
url: '@Url.Action("details")' + '?mode=create'
}).done(function(){
//do something
});
});
public void details(string mode)
{
if(mode.Equals("create")){
}
else{
}
}