我正在做mvcmusicstore练习教程.我在为专辑管理器创建脚手架时注意到了一些事情(添加删除编辑).
我想优雅地编写代码,所以我正在寻找干净的方式来编写它.
仅供参考我正在使商店更通用:
专辑=项目
类型=类别
艺术家=品牌
以下是检索索引的方式(由MVC生成):
var items = db.Items.Include(i => i.Category).Include(i => i.Brand);
Run Code Online (Sandbox Code Playgroud)
以下是检索删除项的方法:
Item item = db.Items.Find(id);
Run Code Online (Sandbox Code Playgroud)
第一个带回所有项目并填充项目模型中的类别和品牌模型.第二个,没有填充类别和品牌.
我怎么能写第二个来做查找并填充里面的内容(最好是一行)...理论上 - 类似于:
Item item = db.Items.Find(id).Include(i => i.Category).Include(i => i.Brand);
Run Code Online (Sandbox Code Playgroud) 阅读Kohana的文档,我发现3.0版本的主要区别在于它遵循HMVC模式而不是版本2.x的MVC.Kohana的文档和维基百科上的这个页面并没有真正给我一个清晰的想法.
那么问题:什么是HMVC模式以及它与MVC的区别?
我在我的项目中使用MVC 3,我看到一种非常奇怪的行为.
我正在尝试为我的模型上的特定值创建一个隐藏字段,问题是由于某种原因,字段上设置的值与模型中的值不对应.
例如
我有这个代码,就像测试一样:
<%:Html.Hidden("Step2", Model.Step) %>
<%:Html.HiddenFor(m => m.Step) %>
Run Code Online (Sandbox Code Playgroud)
我认为两个隐藏的字段都具有相同的值.我所做的是,第一次显示View时将值设置为1,然后在提交后我将Model字段的值增加1.
因此,第一次渲染页面时,两个控件的值都是1,但第二次渲染的值是:
<input id="Step2" name="Step2" type="hidden" value="2" />
<input id="Step" name="Step" type="hidden" value="1" />
Run Code Online (Sandbox Code Playgroud)
如您所见,第一个值是正确的,但第二个值似乎与我第一次显示View时相同.
我错过了什么?*For Html助手是否以某种方式缓存值?如果是这样,我该如何禁用此缓存?
谢谢你的帮助.
对于ASP.NET MVC应用程序,我看到了这篇博客文章.作者ScottGu添加@section
了Index.cshtml.
我有几个问题(参考上面的文章):
@section
特定视图中的代码.为什么?有人可以解释为什么以及何时@section
在View中使用?
在RedirectToAction
控制器内调用时,它会使用HTTP GET自动重定向.如何明确告诉它使用HTTP POST?
我有一个接受GET和POST请求的动作,我希望能够RedirectToAction
使用POST并发送一些值.
像这样:
this.RedirectToAction(
"actionname",
new RouteValueDictionary(new { someValue = 2, anotherValue = "text" })
);
Run Code Online (Sandbox Code Playgroud)
我希望使用HTTP POST而不是GET发送someValue
和anotherValue
值.有谁知道如何做到这一点?
在我的操作中,我希望只响应处理,如果它是从AJAX请求调用的.我该如何检查?
我想做这样的事情:
def action
@model = Model.find(params[:id])
respond_to do |format|
if (wasAJAXRequest()) #How do I do this?
format.html #action.html.erb
else
format.html {redirect_to root_url}
end
end
Run Code Online (Sandbox Code Playgroud) 在PHP 5.5.3的新Macbook上安装MAMP.
重新加载和刷新什么都不做.依然没有.谷歌在几分钟内试图找出问题所在,回过头来刷新.有用.有没有搞错?
我进入了php.ini并禁用了所有新的OPcache并将默认缓存时间设置为0.为文档添加标头以强制不缓存.还是同样的问题.到底发生了什么事?
网络选项卡显示HTTP 200请求,因此index.php
文件中的任何新HTML都可以呈现,但是需要由服务器呈现的新PHP会延迟并且在某些预定的时间过去之前不会呈现,我不知道如何改变.这是怎么回事?
我在Safari中也检查了这一点,所以它绝对是一个服务器,它使文件不被渲染.
有趣的事实是,如果我进入MAMP并将PHP版本更改为旧版本(PHP 5.2或其他),它将正常呈现,没有"缓存问题".切换到PHP 5.5,它就会挂断.在MAMP中,5.5的缓存选项甚至不存在,并且会自动禁用.
我正在尝试将通过AJAX的int(或IEnumerable)数组传递给MVC操作,我需要一些帮助.
javascript是
$.get('/controller/MyAction', { vals: arrayOfValues }, function (data) {...
Run Code Online (Sandbox Code Playgroud)
并且控制器动作是
public ActionResult MyAction(IEnumerable<int> arrayOfValues )
Run Code Online (Sandbox Code Playgroud)
目前请求的格式为
controller/MyAction?_=1301503418429&arrayOfValues[]=491&arrayOfValues[]=368&arrayOfValues[]=235&arrayOfValues[]=437
Run Code Online (Sandbox Code Playgroud)
所以我几乎就在那里,如果我取下方括号,我会得到正确的答案.我应该如何将该数组传递给我的get,以便控制器可以识别它是什么?
非常感谢您的帮助
戴夫
我的所有应用程序都工作正常但突然IIS下的所有站点都没有加载CSS,图像,脚本.它重定向到登录页面.
如果我登录它工作正常.例如mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png
在我的本地机器上它没有登录就可以正常工作
在调用重定向之前是否可以设置ViewBag?
我想要类似的东西
@ViewBag.Message="MyMessage";
RedirectToAction("MyAction");
Run Code Online (Sandbox Code Playgroud)