Asp.net mvc 将模型Id传递给partialView以进行编辑
我有一个进入视图的摄影对象列表:-Asp.net mvc 将模型Id传递给partialView以进行编辑,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,razor,asp.net-mvc-partialview,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Razor,Asp.net Mvc Partialview,我有一个进入视图的摄影对象列表:- Public class Photography { public Photography() { Name = ""; Description = ""; Category = ""; ImgUrl = ""; IsAccordion = false; } public string Name { get; set; } public st
Public class Photography
{
public Photography()
{
Name = "";
Description = "";
Category = "";
ImgUrl = "";
IsAccordion = false;
}
public string Name { get; set; }
public string Description { get; set; }
public string Category { get; set; }
public string ImgUrl { get; set; }
public bool IsAccordion { get; set; }
}
在我看来,我是这样循环浏览列表的:
@foreach (var item in Model.Photographys)
{
<li class="span3" style="text-align: center">
<div class="thumbnail thumbnail-1">
<h3 style="margin-bottom: 10px;">@item.Name</h3>
<div class="">
<div class="">
<img src="@item.ImgUrl" alt="" style="visibility: visible; opacity: 1;">
</div>
</div>
<section>
<p>@item.Description</p>
<a href="#" class="btn btn-1">Read More</a>
<p>@item.IsAccordion</p>
</section>
</div>
</li>
}
@model aPhoto_web.Models.AdminPages.Photography
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Photography</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
}
@foreach(模型中的变量项。照片)
{
@项目名称
@项目.说明
@项目1.I协调
}
我想做的是有一个局部视图,让我编辑我点击的照片的属性。我已使用“编辑”脚手架选项创建了一个局部视图。它如下所示:
@foreach (var item in Model.Photographys)
{
<li class="span3" style="text-align: center">
<div class="thumbnail thumbnail-1">
<h3 style="margin-bottom: 10px;">@item.Name</h3>
<div class="">
<div class="">
<img src="@item.ImgUrl" alt="" style="visibility: visible; opacity: 1;">
</div>
</div>
<section>
<p>@item.Description</p>
<a href="#" class="btn btn-1">Read More</a>
<p>@item.IsAccordion</p>
</section>
</div>
</li>
}
@model aPhoto_web.Models.AdminPages.Photography
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Photography</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
}
@model aPhoto\u web.Models.AdminPages.Photography
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
摄影
@Html.ValidationSummary(true,“,new{@class=“text danger”})
@LabelFor(model=>model.Name,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.Name,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.Name,“,new{@class=“text danger”})
}
等等等等
我读到的大多数partialView都是在父视图渲染时直接渲染的。这不是我想要的…我只希望partialView在我以某种方式将照片对象传递给它时出现
我知道这是一个“大”问题,但如果有人能给我指出正确的方向,那就太好了!谢谢
编辑以澄清:
看看这段代码,我在循环的底部添加了一个“RenderPartial”
@foreach (var item in Model.Photographys)
{
<li class="span3" style="text-align: center">
<div class="thumbnail thumbnail-1">
<h3 style="margin-bottom: 10px;">@item.Name</h3>
<div class="">
<div class="">
<img src="@item.ImgUrl" alt="" style="visibility: visible; opacity: 1;">
</div>
</div>
<section>
<p>@item.Description</p>
<a href="#" class="btn btn-1">Read More</a>
<p>@item.IsAccordion</p>
</section>
</div>
@{
Html.RenderPartial("_editPhoto", item);
}
</li>
}
@foreach(模型中的变量项。照片)
{
@项目名称
@项目.说明
@项目1.I协调
@{
Html.RenderPartial(“_editPhoto”,项目);
}
}
当然,这会为循环中的每个项目呈现局部视图。我想一个方法,通过我点击的对象的部分
编辑:
public ActionResult编辑照片(字符串id)
{
var photo=RavenSession.Load(id)作为摄影;
返回部分视图(“编辑照片”,照片);
}
首先,您必须添加一个控制器方法,该方法以摄影名称/ID(最好是将ID属性添加到摄影类)作为参数,并返回您创建的局部视图
然后,当您单击照片时,您可以使用Jquery将照片名称/ID传递给created controller方法,您可以使用弹出窗口或在页面内的特定元素(例如DIV)中显示结果
示例
当您在视图中循环摄影对象时,您可以向img标记添加一个类和ID属性,如下所示
<img src="@item.ImgUrl" alt="" class="photography-image" data-imgId="@item.ID" style="visibility: visible; opacity: 1;">
然后使用jquery和jqueryui可以打开一个对话框来显示局部视图。检查下面的示例代码
$( ".photography-image" ).click(function() {
e.preventDefault();
$("<div></div>")
.addClass("dialog")
.appendTo("body")
.dialog({
close: function () { $(this).remove() },
modal: true,
height: 500,
width: 500
})
.load("/controler/method?photographyId=" + $(this).data("imgId"));
});
$(“.photography image”)。单击(函数(){
e、 预防默认值();
$("")
.addClass(“对话框”)
.附件(“正文”)
.对话({
关闭:函数(){$(this).remove()},
莫代尔:是的,
身高:500,
宽度:500
})
.load(“/controller/method?photographyId=“+$(this).data”(“imgId”));
});
谢谢 如果你想在某些特定情况下呈现你的局部视图,那么当某些特定条件满足时,就在jquery的帮助下呈现你的局部视图。谢谢你的回答,你介意给我看一下将我的id传递给控制器的jquery吗?(顺便说一句,photo类继承自另一个类,因此它有一个id)…非常感谢您提供的示例,我将尝试让它工作,我也会回来的!大家好,我现在已经安装了JqueryUI,我现在再次尝试您的示例代码。这部分:.load(“/controller/method?photographyId=“+$(This).data(“imgId”))我假设是一个控制器?你能告诉我这个控制器方法应该是什么样子吗?当我在你的示例中添加一个警报(“hello”)时,它会显示出来,这样它就可以工作了…但是我真的希望代码将我的照片传递到对话框中。是的,它会调用控制器方法。在您的情况下,它应该是,
.load(“/YourControlerName/EditPhoto?id=“+$(this.data)(“imgId”)代码>:)