简体   繁体   English

将数据从视图传递到ASP.NET MVC4剃须刀中的控制器

[英]Pass data from view to controller in asp.net mvc4 razor

I've situation like, I've got two different views and one common controller (and its method too) for both. 我遇到的情况是,我有两个不同的视图和一个共同的控制器(以及它的方法)。 One is create item view and another is edit item view. 一个是创建项目视图,另一个是编辑项目视图。 My controller has one method called details. 我的控制器有一种称为详细信息的方法。 Now I want to inform controller that I'm coming form create or edit. 现在,我想通知控制器我即将创建或编辑表单。 On this basis my whole code will execute. 在此基础上,我的整个代码将执行。

csHTML 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>

Controller 调节器

public ActionResult details()
{
    // How to get data here??? 
     if(createMode){
      }
      else{
      }
}

To achieve this one way is pass parameter in querystring , but I don't want to do that. 实现这种方法的一种方法是在querystring传递参数,但是我不想这样做。 So is there any other way to pass data from View to Controller?? 那么还有其他方法可以将数据从View传递到Controller吗?

Thanks in advance... 提前致谢...

regarding 关于

@Session["createMode"] = true; // Not working...
@ViewBag["createMode"] = true; // Not working...

This cannot work because @Session and @ViewBag are server side variables which cannot be changed via JavaScript (which is client side) obviously. 这是行不通的,因为@Session和@ViewBag是服务器端变量,显然不能通过JavaScript(客户端)进行更改。

You can use 您可以使用

  1. Query string (which you mentioned) 查询字符串(您提到的)
  2. Post form data 过帐表格数据
  3. Use Ajax request and write a controller action which retrieves your request 使用Ajax请求并编写一个控制器操作来检索您的请求

to achieve what you want 实现你想要的

do something like this 做这样的事情

in HTML 在HTML中

<input type="hidden" id="createMode" value="False" />

javascript: JavaScript的:

$( document ).ready(function() {
 $('#iCreate').click(function(){ 
    $('#createMode').val('True');
 });
});

Controller: 控制器:

public void details(bool createMode)
{
    //createMode will automatically be passed
     if(createMode){
      }
      else{
      }
}

An easy way to do this is by using Ajax 一种简单的方法是使用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{
      }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM