【发布时间】:2017-10-18 18:54:34
【问题描述】:
我有下一个问题,我可能需要通过点击另一个div来更改div的内容,现在我将更详细地解释它:
我正在使用 MVC 构建关于检索和发送消息的简单应用程序,现在我正在处理 收件箱视图,在我看来,我已经加载了消息列表(已检索来自我的控制器)用于已登录的用户,视图的右侧部分保留用于查看单击消息的内容(位于我的视图左侧并列出如下图所示),这就是它的外观(插图不是来自我的应用程序的真实图像,而是相同的控件顺序、内容等):
如你所见,我的视图分为左右部分,左边是登录用户的消息列表,右边应该显示点击消息的内容,我想这必须使用 javascript 来完成/ajax,但我几乎没有经验,我不知道如何在消息点击获取消息 ID 或其他内容,并通过该过滤器正确 div 的内容(我想这就是重点)。
这是我的查看代码:
@model IEnumerable<MyApplication.Entities.Message>
@{
ViewBag.Title = "Index";
}
<div class="">
<!-- /MAIL LIST (LEFT PART OF VIEW) -->
<div class="x_content">
@foreach (var item in Model)
{
<a href="#">
<div class="mail_list">
<div class="left">
<i class="fa fa-circle"></i>
</div>
<div class="right">
<h3>
@item.Sender.Code @item.Sender.FirstName @item.Sender.LastName
<small>@item.Created</small>
</h3>
<p>@item.Body</p>
</div>
</div>
</a>
}
</div>
<!-- CONTENT MAIL -->
<div class="col-sm-9 mail_view">
<div class="inbox-body">
<div class="col-md-4 text-right">
<p class="date"> 23:32h 16.05.2017.</p>
</div>
<div class="col-md-12">
<h4>Subject</h4>
</div>
</div>
<div class="sender-info">
<div class="row">
<div class="col-md-12">
<strong>User 1</strong>
<span>(user11@gmail.com)</span> za
<strong>user2</strong>
<a class="sender-dropdown"><i class="fa fa-chevron-down"></i></a>
</div>
</div>
</div>
<div class="view-mail">
<p>Message content</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
<div class="btn-group">
<button class="btn btn-sm btn-primary" type="button">
<i class="fa fa-reply"></i>
Odgovori
</button>
<button class="btn btn-sm btn-default" type="button" data-placement="top"
data-toggle="tooltip" data-original-title="Forward">
<i class="fa fa-share"></i>
</button>
<button class="btn btn-sm btn-default" type="button" data-placement="top"
data-toggle="tooltip" data-original-title="Print">
<i class="fa fa-print"></i>
</button>
<button class="btn btn-sm btn-default" type="button" data-placement="top"
data-toggle="tooltip" data-original-title="Trash">
<i class="fa fa-trash-o"></i>
</button>
</div>
</div>
</div>
<!-- /CONTENT MAIL -->
</div>
</div>
</div>
</div>
</div>
</div>
编辑 - 我的模型:
public class Message
{
#region Attributes
public System.Guid MessageID { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public bool UnRead { get; set; }
public bool Active { get; set; }
public User Sender { get; set; }
#endregion
}
现在我想知道如何通过单击左侧部分(加载的消息)来过滤/刷新/更改右侧部分的内容。
我是否还应该在循环中包含MessageID 作为HiddenFor 以便能够获取所选消息的ID 或其他?
无论如何,我真的需要关于这些人的帮助,甚至是一些开始,一些方向,无论如何,非常感谢! 干杯
【问题讨论】:
-
只需为左右创建2个视图,当左键单击视图(div)时,使用ng-click将函数评估为true并在右侧使用hg-show显示右视图
-
我想我们可以给你一个跟进的流程。在右视图上设置一个包含消息内容的元素。检索消息列表并将它们放在左侧视图中。使用 id 或自定义属性为他们分配一个唯一标识符。在这些元素上,将启动 AJAX 请求的单击事件绑定到请求与该 ID 对应的消息内容的服务器。从服务器获得响应后,将正确元素的内容设置为等于从服务器获得的消息内容。
-
@quirimmo 我检索了消息列表并通过 for 循环将它们显示在左视图中。他们已经在那里有 MessageID,因此左视图上的每个项目都是唯一的,也许我不需要调用服务器来获取消息信息,因为我正在循环实际消息对象并且我需要的所有东西都准备好了,我应该得到它并在视图的正确部分显示完整的消息正文/主题..但我不知道该怎么做。
-
使用您的 MessageID 作为左侧元素的标识符,在传递当前元素的那些元素上绑定单击事件,并更改右侧视图的内容,分配您单击的消息的相应正文.缺少对象的结构,您的 HTML 中充满了项目。您可以编辑您的帖子以仅显示所涉及的元素(因此查看内容的左侧项目和右侧项目)和相关代码(您的消息结构)这也将使其更易于阅读
-
@quirimmo 我进行了编辑以简化我的 HTML ..
标签: javascript ajax model-view-controller view controller