好吧我有一个家庭控制器和一个动作索引。我的视图从家庭控制器的demo函数中检索值。每次我点击按钮(在索引视图中),它创建homecontroller对象,id是被初始化为1.因此,我在演示函数中的第二个条件没有执行。但是,如果我将id变量设置为静态,它就可以工作。所以,为什么在单击按钮时,每次都会创建控制器对象。为什么每当我们可以对特定对象执行类似操作时,是否需要创建不同的对象?
家庭控制器:
public class homeController : Controller
{
//
// GET: /home/
public ActionResult Index()
{
return View();
}
public int id = 1;
public string demo()
{
if (id == 1)
{
id++;
return "hello";
}
id--;
return "";
}
}
索引视图:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$('document').ready(function () {
$('#b1').click(function () {
var URL = "/home/demo";
$.get(URL, function (data) {
$("#t1").html(data);
});
});
});
</script>
<div>
<p id="t1"></p>
<input id="b1" type="button" value="button1" />
</div>
答案 0 :(得分:1)
这是一个设计问题。
在ASP.NET MVC
上,生命周期如下:
HTTP请求 - &gt;路由到MVC处理程序 - &gt;控制器创建 - &gt; 动作方法调用 - &gt;结果(查看)执行 - &gt;回到客户端。
查看Lifecycle of an ASP.NET MVC 5 Application,PDF
文档内容非常丰富。
特别是在您的示例中,$.get
请求会生成新的HTTP请求,您可能希望发送ID或将其保留在控制器之外的位置。