如何将会话添加到fakeContext?
我们为部分请求构建此函数,其中内容必须作为字符串返回.只有我们现在在部分请求中没有会话.
我不能像fakeContext.Session = HttpContext.Current.Session那样添加它们
有人建议吗?
///<summary>
/// Invoke the partial request and return the result as a string.
///</summary>
///<param name="context">The controller context to use.</param>
///<returns>A string containing the result of the partial request.</returns>
public String InvokeAsString(ControllerContext context)
{
var stringBuilder = new StringBuilder();
//create memory writer used for httpresponse.
var memoryWriter = new StringWriter(stringBuilder);
//create a fake response
var fakeResponse = new HttpResponse(memoryWriter);
//create a fake context.
var fakeContext = new HttpContext(HttpContext.Current.Request, fakeResponse);
var oldPrincipal = context.HttpContext.User;
fakeContext.User …Run Code Online (Sandbox Code Playgroud) 更新 问题是语法问题.@awrigley显示了在Razor中编写它的正确方法.
以下作品:
@if(Model.Thing.Prop != null)
{
Html.RenderPartial("SomePartialView", Model.Thing.Prop);
}
Run Code Online (Sandbox Code Playgroud)
您需要显示作为HTML表格Foo的给定顶部1的详细信息Bar.如果为空,如何隐藏空表或显示"未找到"消息Foo?
例如.我正在接受NullReferenceException以下一行,因为Model.Thing.Prop是null;
@{Html.RenderPartial("SomePartialView", Model.Thing.Prop);}
Run Code Online (Sandbox Code Playgroud)
故意为null,我的Repository返回null而不是null Foo.但这有点撇开,即给定一个null Model.Thing.Prop,我不想打电话给Html.RenderPartial.
更新
我尝试了以下没有运气:
@if(Model.Thing.Prop != null)
{
@{Html.RenderPartial("SomePartialView", Model.Thing.Prop);}
}
Run Code Online (Sandbox Code Playgroud)
这导致Visual Studio告诉我它预期;第1行第1列也是第1行第1列;的无效表达式(我猜这是由于MVC3的预发布状态),如果我在我得到的浏览器中点击页面
CS1501:方法'Write'没有重载需要0个参数
@Html.RenderPartial突出显示该行.
我也试过了
@if(Model.Thing.Prop != null)
{
<text>
@{Html.RenderPartial("SomePartialView", Model.Thing.Prop);}
</text>
}
Run Code Online (Sandbox Code Playgroud)
但这会导致NullReferenceException我的部分视图中出现一个似乎不对的内容.Model.Thing绝对是有效的Bar,Model.Thing.Prop绝对是一个null Foo.
asp.net-mvc renderpartial nullreferenceexception razor asp.net-mvc-3
Rails 3.0.7,Windows 7,NetBeans 6.9.1,JRuby 1.5.1,Ruby 1.8.7
我有app/views/browsing/index.rhtml这个相关部分,专注于render电话:
<table>
<tr>
<th><em><%=I18n.t('browsing.actions')%></em></th>
<% colnames = @_controller.model_class.column_names %>
<% colnames.each do |name| %>
<% render :partial => 'browsing/header_field', :locals => {:name => name} %>
<% end %>
</tr>
Run Code Online (Sandbox Code Playgroud)
我有app/views/browsing/_header_field.rhtml以下内容:
<% puts "DEBUG: rendering " + name + " field." %>
<% if @_controller.orderables.include?(name.to_sym) %>
<%
otext = ''
oopts = @_controller.orderings[name];
if !oopts.nil?
otext += ' ' + (oopts[:is_asc] ? '?' : '?')
otext += '<span class="small">'+oopts[:prio].to_s+'</span>' …Run Code Online (Sandbox Code Playgroud) 我知道这个问题已被多次询问,无论是在这里还是在Yii网站上,但即使在完成每个解决方案之后我也无法获得解决方案.我确信我做的事情从根本上是错误的.所以如果你还在读这个 - 这里什么都没有,
我有一个页面,其中加载了CheckBoxList小部件.它有一个change()jQuery函数调用,刷新一个完美运行的CGridView.我还有一个与checkBoxList中具有click事件的每个项相关的span.
此单击事件依次调用"部分呈现"视图的控制器 -
Yii::app()->clientscript->scriptMap['jquery.js'] = false;
$this->widget('ext.xxx.EModelWidget', array(
'name' => $widget_name,
'manufacturer_id' => $manufacturer_id,
)
);
Run Code Online (Sandbox Code Playgroud)
并且相应的窗口小部件代码在从db获取$ data之后打印CheckBoxList.
echo CHtml::checkBoxList($this->name, array(), $data, array(
'class' => 'modelFilter',
'separator' => '',
'template' => '<div>{input} {label}</div>',
'id' => 'dummyID',
));
Run Code Online (Sandbox Code Playgroud)
如您所见,我已将每个将呈现为复选框的元素的类名设置为modelFilter
现在我在主视图文件中有一个脚本,只需在单击类modelFilter的checkBox时显示一个警告框.
Yii::app()->clientScript->registerScript('model-selected', "
$('input.modelFilter').change(function(){
alert('Hellpo!');
});
");
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这种情况从未发生过.
我在所有论坛中阅读的两个常见解决方案是
a)Yii :: app() - > clientscript-> scriptMap ['jquery.js'] = false; 你可以看到我已经适时跟随.
b)renderPartial的$ result和$ processOutput参数分别为false和true.,这也是我所遵循的.
所以我的问题是我应该怎么做才能获得通过Ajax工作加载的内容的更改功能,在Yii!
我有一个Yii表单,它调用另一个模型的渲染部分(团队has_many team_members).我想通过ajax调用部分视图来添加team/_form中的成员.所有工作(调用,显示,保存)除了ajax验证(服务器和客户端).如果我提交表单,会员的模型不会验证,即使在客户端,它也不会验证必填字段.
任何线索?
//_形成
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'team-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
'validateOnChange'=>true
),
'htmlOptions' => array('enctype' => 'multipart/form-data'),
)); ?>
Run Code Online (Sandbox Code Playgroud)
//控制器
public function actionMember($index)
{
$model = new TeamMember();
$this->renderPartial('_member',array(
'model'=> $model, 'index'=> $index
)
,false,true
);
}
public function actionCreate()
{
$model=new Team;
$members = array();
if(isset($_POST['Team']))
{
$model->attributes=$_POST['Team'];
if(!empty($_POST['TeamMember'])){
foreach($_POST['TeamMember'] as $team_member)
{
$mem = new TeamMember();
$mem->setAttribute($team_member);
if($mem->validate(array('name'))) $members[]=$mem;
}
}
$this->redirect(array('team/create','id'=>$model->id,'#'=>'submit-message'));
}
$members[]=new TeamMember;
$this->performAjaxMemberValidation($members);
$this->render('create',array(
'model'=>$model,'members'=>$members
));
}
Run Code Online (Sandbox Code Playgroud)
//_会员
<div class="row-member<?php echo $index; ?>"> …Run Code Online (Sandbox Code Playgroud) 我试图有一个通用的主页,根据传递给控件的参数,将显示不同的内容(模块).
例如,用户可以从菜单中选择肯塔基州,肯塔基州的ID是1.家庭控制器获取id(1)并确定该状态的可能模块(简单的数据库调用).也许有一个公告模块和国家的联系人模块.公告模块可能有几个项目,但它只有一个模块.每种类型的模块都会有部分视图.
这是我的基本设置.
public interface IModuleRepository
{
IList<MenuItemModule> GetMenuItemModules(int menuItem);
IList<Announcements> GetAnnouncements(int modID);
IList<News> GetNews(int modID);
IList<Contacts> GetContacts(int modID);
}
//business object
public class MenuItemModule
{
private int _MenuItemID;
private int _ModuleID;
private int _ModuleDefID;
private string _Src;
private int _ModuleOrder;
//get, set properties for these...
}
//announcements entity
public class Announcements
{
private int _ID = -1;
private int _MenuItemID = -1;
private int _ModuleID = -1;
private string _Description = string.Empty;
//get set props ...
}
Run Code Online (Sandbox Code Playgroud)
在我的家庭控制器......
public …Run Code Online (Sandbox Code Playgroud) model-view-controller model renderpartial partial-views asp.net-mvc-3
在我看来,我正在渲染一部分.这实际上是一个行元素,在表中显示大约500 - 600次.我渴望加载所有协会.但是,问题是,相同的部分需要一些突然不同的渲染时间.
我的rails服务器o/p:
Rendered admin/invoices/_update.html.erb (1330.3ms)
Rendered admin/invoices/_update.html.erb (4.8ms)
Rendered admin/invoices/_update.html.erb (4.8ms)
Rendered admin/invoices/_update.html.erb (8.8ms)
Rendered admin/invoices/_update.html.erb (4.4ms)
Rendered admin/invoices/_update.html.erb (1309.9ms)
Rendered admin/invoices/_update.html.erb (4.7ms)
Rendered admin/invoices/_update.html.erb (4.6ms)
Rendered admin/invoices/_update.html.erb (4.6ms)
Rendered admin/invoices/_update.html.erb (1322.6ms)
Rendered admin/invoices/_update.html.erb (4.2ms)
Run Code Online (Sandbox Code Playgroud)
此外,没有特定的行每次都需要更长的时间.
在我的视图文件中:
<% @updates.each do |update| %>
<%= render :partial => 'update', :locals => {:user => update[0]} #each of this is a row %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
更新:还建议这是一个很好的方法吗?即:多次循环部分.我不能用分页和Ajax来固定东西.任何其他方法.?
renderpartial partial-views ruby-on-rails-3 ruby-on-rails-3.1
嗨,我在asp.net mvc Web应用程序的主页上定义了以下菜单
<%Html.RenderPartial("AdminMenu"); %>
<%Html.RenderPartial("ApproverMenu"); %>
<%Html.RenderPartial("EditorMenu"); %>
Run Code Online (Sandbox Code Playgroud)
但是,我想只显示正确的菜单,具体取决于登录的用户角色.我该如何实现这一目标?
我开始认为我的策略是不正确的,那么是否有更好的方法来实现同样的目标?
我似乎无法弄清楚这一点,我尝试了多个论坛.当我使用javascript点击链接时,我想渲染一个表单.有人可以展示一个如何做到这一点的基本例子吗?
我真的没有什么大问题,如果很明显,我的坏问题很明显,但是我在 SO 或 google 上找不到这个,这非常罕见,无论如何......我正在使用 Ruby on Rails 创建一个模式库,其中当然包含代码片段与示例一起使用,现在我所做的是在我的视图中某处的文件夹中创建一个部分 - 现在使用以下内容渲染此部分没有问题:
= render partial: '/snippets/grid/single-column.html.slim'
但是,对于这些片段,我还想呈现细长文件本身的实际来源,例如
.container
ul.test
li: a href="#"
li: a href="#"
li: a href="#"
li: a href="#"
Run Code Online (Sandbox Code Playgroud)
我希望“普通”渲染的输出与上面的代码片段一样。这样做的原因是我使用 Google Code Prettify 来美化这段代码以提高可读性,并且由于我们在这里使用 slim 作为模板引擎,因此很容易复制代码段并将其粘贴到视图中。
我不确定这是否可行,或者这种类型的渲染是否有特定名称 - 如果是这样,请告诉:)
作为参考,我查看了以下地方,看看我是否可以掌握这一点:
但是我没有在这里找到我的答案。此外,我是 Rails 的大一新生,所以我在构建这些类型的函数方面还没有很多经验(很高兴了解您正在使用的资源 ;))。
像往常一样,所有的帮助都是appriciated 。
提前致谢 - Sidney Liebrand
编辑
是的,包括 rails / slim 版本也可能是明智的:
renderpartial ×10
asp.net-mvc ×2
c# ×2
yii ×2
ajax ×1
httpcontext ×1
javascript ×1
jquery ×1
master-pages ×1
model ×1
plaintext ×1
razor ×1
session ×1
slim-lang ×1