我试图通过使用Viewbag将表单元素传递到MVC3视图,并简单地将HTML写入页面...
在控制器中:
ViewBag.myData = "<input type=""hidden"" name=""example"" value=""examplevalue"">";
Run Code Online (Sandbox Code Playgroud)
在视图中(我知道我可以使用表单的帮助器):
<form action="http://exampleurl/examplepage" method="post" id="example-form">
@ViewBag.myData
<input type="hidden" name="anotherexample" value="anotherexamplevalue" />
</form>
Run Code Online (Sandbox Code Playgroud)
这将myData呈现为HTML中的文本,即:
<type="hidden" name="example" value="examplevalue">
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我如何让Razor做相当于旧的:
<%= myData %>
Run Code Online (Sandbox Code Playgroud)
而不是取代<>
谢谢保罗
我的控制器中有一个基本的Edit方法,当编辑成功时,它会重定向回顶级列表("Index").MVC脚手架后的标准行为.
我正在尝试更改此Edit方法以重定向回上一页(而不是索引).由于我的Edit方法没有使用默认的映射输入参数"id",我首先尝试使用它来传入上一个URL.
在我的编辑"获取"方法中,我使用此行来获取以前的URL并且它工作正常:
ViewBag.ReturnUrl = Request.UrlReferrer;
Run Code Online (Sandbox Code Playgroud)
然后,我使用我的表单标记将此返回URL发送到编辑"post"方法,如下所示:
@using (Html.BeginForm(new { id = ViewBag.ReturnUrl }))
Run Code Online (Sandbox Code Playgroud)
现在轮到这里了.我无法正确获取从id参数解析的URL.
*** 更新:已解决 ***
使用Garry的示例作为指南,我将参数从"id"更改为"returnUrl"并使用隐藏字段传递我的参数(而不是表单标记).获得的经验教训:仅使用"id"参数,如何使用它并保持简单.它现在有效.这是我更新的代码和注释:
首先,我第一次使用Request.UrlReferrer抓取以前的URL.
//
// GET: /Question/Edit/5
public ActionResult Edit(int id)
{
Question question = db.Questions.Find(id);
ViewBag.DomainId = new SelectList(db.Domains, "DomainId", "Name", question.DomainId);
ViewBag.Answers = db.Questions
.AsEnumerable()
.Select(d => new SelectListItem
{
Text = d.Text,
Value = d.QuestionId.ToString(),
Selected = question.QuestionId == d.QuestionId
});
// Grab the previous URL and add it to the Model using ViewData or ViewBag
ViewBag.returnUrl = Request.UrlReferrer; …Run Code Online (Sandbox Code Playgroud) 我需要更有经验的程序员的帮助.我想提高我的MVC技能.但我找不到关于Google for MVC的好教程.谷歌总是给"初学者MVC".
我理解MVC是什么,我可以做到,但我没有经验足以在OOP中做一些实用的事情.
如果有人知道一个好的面向对象的MVC教程,请指引我到正确的地方 - 我正在寻找好的链接,书籍等.
我的理解是,在每个Web请求期间都不会调用控制器的构造函数.假设这是真的,控制器的生命周期是什么?是应用程序启动时"构造",然后使用每个Web请求注入的requestcontext进行缓存和调用吗?
为了清楚起见,我不是在问如何模拟构造函数行为,我使用OnActionExecuting事件来启动我通常在构造函数中执行的操作.另外,我确实在控制器上使用构造函数进行单元和系统测试.
谢谢!
我正在开始一个大型的codeigniter项目,并希望尝试为内容片段创建一些可重复使用的"迷你"视图,例如可以在不同页面/控制器上显示的数据循环.
从主控制器的视图中调用视图会更好吗?如果是这样,怎么样?或者我应该从控制器调用"迷你视图",从而将视图的代码传递给主视图?
我希望找到一种方法来创建一个带有Laravel 4中注册路径路径的数组.
从本质上讲,我希望得到一个像这样返回的列表:
/
/login
/join
/password
Run Code Online (Sandbox Code Playgroud)
我确实遇到过一个方法Route::getRoutes(),它返回一个带有路由信息和资源的对象,但路径信息受到保护,我无法直接访问这些信息.
有没有其他方法来实现这一目标?也许是另一种方法?
我正在使用HTML Canvas使用以下应用程序:http://driz.co.uk/particles/
目前设置为640x480像素,但我想将其全屏显示,因为它将显示为投影仪.但是据我所知,除了数字而不是%之外,我不能将画布大小设置为100%作为变量.使用CSS只是拉伸它而不是使它实际全屏.
有任何想法吗?
编辑:尝试使用jQuery找到高度和宽度,但它打破画布任何想法为什么?
var $j = jQuery.noConflict();
var canvas;
var ctx;
var canvasDiv;
var outerDiv;
var canvasW = $j('body').width();
var canvasH = $j('body').height();
//var canvasW = 640;
//var canvasH = 480;
var numMovers = 550;
var movers = [];
var friction = .96;
var radCirc = Math.PI * 2;
var mouseX, mouseY, mouseVX, mouseVY, prevMouseX = 0, prevMouseY = 0;
var isMouseDown = true;
function init()
{
canvas = document.getElementById("mainCanvas");
if( canvas.getContext )
{
setup(); …Run Code Online (Sandbox Code Playgroud) 为什么Request["parameterName"]在视图中返回null?我知道我可以从控制器获取它,但我必须在视图中进行一些检查.我正在使用ASP.NET MVC 3.
我有这样的示例代码:
<div class="cart">
<a onclick="addToCart('@Model.productId');" class="button"><span>Add to Cart</span></a>
</div>
<div class="wishlist">
<a onclick="addToWishList('@Model.productId');">Add to Wish List</a>
</div>
<div class="compare">
<a onclick="addToCompare('@Model.productId');">Add to Compare</a>
</div>
Run Code Online (Sandbox Code Playgroud)
如何编写JavaScript代码来调用控制器操作方法?
asp.net-mvc ×5
php ×3
razor ×3
c# ×2
javascript ×2
arrays ×1
canvas ×1
codeigniter ×1
destructor ×1
html ×1
html5 ×1
laravel ×1
laravel-4 ×1
oop ×1
templates ×1
url ×1
viewbag ×1