我正在开发一个mvc3网络应用程序.当用户更新某些内容时,我想将旧数据与用户输入的新数据进行比较,并且对于每个不同的字段,将这些数据添加到日志中以创建活动日志.
现在这是我的保存动作:
[HttpPost]
public RedirectToRouteResult SaveSingleEdit(CompLang newcomplang)
{
var oldCompLang = _db.CompLangs.First(x => x.Id == newcomplang.Id);
_db.CompLangs.Attach(oldCompLang);
newcomplang.LastUpdate = DateTime.Today;
_db.CompLangs.ApplyCurrentValues(newcomplang);
_db.SaveChanges();
var comp = _db.CompLangs.First(x => x.Id == newcomplang.Id);
return RedirectToAction("ViewSingleEdit", comp);
}
Run Code Online (Sandbox Code Playgroud)
我发现我可以用它来遍历我的oldCompLang属性:
var oldpropertyInfos = oldCompLang.GetType().GetProperties();
Run Code Online (Sandbox Code Playgroud)
但这并没有真正帮助,因为它只显示属性(Id,Name,Status ...)而不是这些属性的值(1,Hello,Ready ...).
我可以走得那么艰难:
if (oldCompLang.Status != newcomplang.Status)
{
// Add to my activity log table something for this scenario
}
Run Code Online (Sandbox Code Playgroud)
但我真的不想为对象的所有属性做这件事.
我不确定迭代两个对象以查找不匹配的最佳方法是什么(例如,用户更改了名称或状态......)并根据我可以存储在另一个表中的差异构建列表.
我决定开始使用MVC 3,并且在尝试将我的一个Web应用程序重做为MVC3时遇到了这个问题.
我有这样设置的项目:
public class Project
{
public int ProjectID { get; set; }
[Required(ErrorMessage="A name is required")]
public string Name { get; set; }
[DisplayName("Team")]
[Required(ErrorMessage="A team is required")]
public int TeamId { get; set; }
[DisplayName("Start Date")]
[Required(ErrorMessage="A Start Date is required")]
[DisplayFormat(ApplyFormatInEditMode=true, DataFormatString="{0:d}")]
public DateTime StartDate { get; set; }
[DisplayName("End Date")]
[Required(ErrorMessage="An End Date is required")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime EndDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的报名表是这样编写的日期:
<table>
<tr>
<td>
<div class="editor-label"> …Run Code Online (Sandbox Code Playgroud) 所以我有这个MVC 3应用程序有一个下拉列表,我用来通过jquery填充div.它在本地工作正常,但当我将其部署到服务器时,它的重定向不正确.这是我的jquery:
$("#ddlCategoryMain").change(function () {
$.post("/Home/Category/", { mileID: $(this).val() }, function (data) {
refreshDiv($("div#main"), data);
});
});
function refreshDiv(select, data) {
select.html("");
select.append(data);
}
Run Code Online (Sandbox Code Playgroud)
本地这个工作正常.但是当部署到我的服务器时,它似乎正在寻找http:// myserver/Home/Category而不是http:// myserver/mywebsite/Home/Category
我可以通过简单地在jquery函数中的/ Home/Category之前添加我的应用程序的名称来修复它,但这感觉不对...
我也尝试在/ Home之前添加../,〜/,../.. /但这没有任何区别.
解决这个小问题的任何方法?谢谢!
我试图让我的Ajax.BeginForm运行一个函数OnSuccess但我不断收到firebug错误信息:
UpdateProjectDiv is not defined
return Function.constructor.apply(null, argNames);
Run Code Online (Sandbox Code Playgroud)
这是表单的样子:
<script type="text/javascript">
$(document).ready(function () {
function UpdateProjectDiv() {
var projid = $("#ddlProjectsManage").val();
$.post("/Manage/ProjectEmployeeList/", { projectid: projid }, function (data) {
populateDiv($("#divProjectsToFill"), data);
});
}
function populateDiv(div, data) {
div.html('');
div.append(data);
}
});
</script>
@using (Ajax.BeginForm("MoveToProject", new AjaxOptions { UpdateTargetId = "divAllEmployeesToFill", OnSuccess = "UpdateProjectDiv" }))
{
[insert non-relevant code here]
<input id="btnMoveEmpsToProject" type="submit" value=">>" />
@Html.Hidden("SelectedProjectID","9999999999999")
}
Run Code Online (Sandbox Code Playgroud)
我的控制器动作:
[HttpPost]
public ActionResult MoveToProject(UnassignedEmployeeBindingModel model, int selectedprojectId)
{
var tempteam = _db.SpecTeams.SingleOrDefault(s => …Run Code Online (Sandbox Code Playgroud) 我需要显示类似于表格的东西,其中第一列可以水平滚动.
该列有一段时间处于粘性状态,但是当您滚动太多时,它会开始与其余部分一起移动:
.wrapper {
width: 250px;
overflow: auto;
display: flex;
flex-direction: column;
position: relative;
}
.header-container, .row-data {
display: flex;
position: relative;
}
.header, .data {
flex: 0 0 80px;
padding: 1rem;
background-color: lightblue;
}
.fullname {
position: sticky;
left: 0;
background-color: orange;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="wrapper">
<div class="header-container">
<div class="header fullname">Full Name</div>
<div class="header">Test 1</div>
<div class="header">Test 2</div>
<div class="header">Test 3</div>
<div class="header">Test 4</div>
</div>
<div class="data-container">
<div class="row-data">
<div class="data fullname">Full Name</div>
<div class="data">Test 1</div>
<div class="data">Test …Run Code Online (Sandbox Code Playgroud)我有一个PartialViewResult操作,它呈现我从页面上的$ .ajax调用调用的PartialView.
PartialView还有一个用于VM中项目的foreach循环,在该PartialView中我有两个渲染另外两个Partial的RenderAction.
一切正常,除了它渲染的速度.当我注释掉两个嵌套的RenderAction时,主要的局部视图渲染速度非常快.当我取消注释它们时,主要局部视图呈现3到5秒.即使我从部分视图中删除所有数据并且从操作中删除所有数据只返回空视图,它仍然需要3-5秒.
不知何故,我的应用程序在呈现这两个部分时遇到问题,即使它们是空的.
我的代码:主要行动:
public PartialViewResult MyTasks(int milestoneId, int currentPage = 1)
{
var mergedTasks = new List<MergedTask>();
var TrackingTeams = _TrackingTeams.GetAll().ToList();
var pagingInfo = new PagingInfo() {CurrentPage = currentPage, ItemsPerPage = 10, TotalItems = _TrackingTeams.GetAll().Count() };
mergedTasks.AddRange(from TrackingTeam in TrackingTeams
let task = allTasks.Single(x=>x.TestId == (int)TrackingTeam.TrackingTask.TestId)
select new MergedTask()
{
Summary = TrackingTeam.TrackingTask.Description,
InternalId = task.Id,
DevTrackingTask = TrackingTeam.TrackingTask,
LastUpdate = task.DateModified
});
return PartialView(new DevTrackingTaskViewModel
{
MergedTasks = mergedTasks,
Category = _categories.GetById(categoryId),
PagingInfo = pagingInfo
}); …Run Code Online (Sandbox Code Playgroud) 我的Rabbit队列问题当前只对队列中的第一条消息做出反应,之后被忽略的任何其他消息都被忽略了.
我首先实例化连接并在IQueueConnectionProvider中声明队列:
var connectionFactory = new ConnectionFactory() { HostName = hostName };
var connection = _connectionFactory.CreateConnection();
var channel = connection.CreateModel();
Run Code Online (Sandbox Code Playgroud)
然后IQueueConnectionProvider在我的IQueueListener中用作只有一个方法的依赖项:
public void ListenToQueue(string queue)
{
var channel = _queueConnectionProvider.GetQueue();
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
string path = @"d:\debug.log.txt";
File.AppendAllLines(path, new List<string>() {"MESSAGE RECEIVED", Environment.NewLine });
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
channel.BasicAck(ea.DeliveryTag, false);
};
channel.BasicConsume(queue, true, consumer);
}
Run Code Online (Sandbox Code Playgroud)
我的日志文件最终只是一行"MESSAGE RECEIVED",但我可以在Rabbit ui界面看到我的其他服务正在将消息推送到该队列就好了.
这里有什么我想念的吗?
我有一个页面,其中包含一个任务列表,每个任务都有一个下拉列表,其中包含可分配任务的团队列表,但由于任务量不足,我无法在Action中预先填充它,因为它会降低分页速度/显示任务非常显着.所以相反,在点击下拉列表时,我有一个jquery函数,它调用一个返回Json字符串的动作.
所有这些在Firefox中都可以正常工作,但在Chrome中,当用户点击下拉列表时,会进行调用,但下拉列表不会填充.用户必须单击并重新打开下拉列表,然后从初始调用中获取数据(没有第二次调用).数据可以很好地添加到HTML中,但下拉列表不会刷新.
$("#teamsSpanFor1354405").click(function () {
var issueId = 1354405;
var ddl = $("#teamsSpanFor1354405").find("select.ddlTeamsAssignTask");
if (ddl.find("option").length == 1) {
$.ajax({
url: '/Tracker/Task/DisplayAssignTaskToTeam',
data: { milestoneId: 1, issueId: issueId, jsonRequest: "true" },
type: 'POST',
async: true,
success: function (data) {
console.log(data);
var html = "<option value=''>Assign to Team</option>";
$.each(data, function () {
html += "<option value='" + this.Id + "'>" + this.Name + "</option>";
});
console.log(html);
ddl.html(html);
}
});
}
});
@using (Ajax.BeginForm("AssignTaskToTeam", new AjaxOptions { UpdateTargetId = "assignTaskForIssue" + Model.IssueId, OnSuccess …Run Code Online (Sandbox Code Playgroud) 我有一个查询功能,根据组件状态和可用性列出功能
SELECT Brand.Id
, Brand.Name
, Brand.Impact
, Brand.Visibility
, Brand.Risk
, SUM(Brand.Impact + Brand.Visibility + Brand.Risk) AS Priority
FROM Brand
LEFT OUTER JOIN Type
ON Brand.Id = Type.FeatureId
LEFT OUTER JOIN Model
ON Type.Id = Model.SubFeatureId
LEFT OUTER JOIN TestingStatus
ON Model.StatusId = TestingStatus.Id
WHERE (Model.IsDeleted = 'False')
AND (Brand.IsDeleted = 'False')
AND (Type.IsDeleted = 'False')
AND (@TeamId = 0 OR Model.TeamId = @TeamId)
GROUP BY Brand.YearId, Brand.Id, Brand.Name, Brand.Impact, Brand.Visibility, Brand.Risk
HAVING (Brand.YearId = @YearId)
Run Code Online (Sandbox Code Playgroud)
我的结果如下:
ID Name …Run Code Online (Sandbox Code Playgroud) 我希望每个打印页面上都有相同的背景图像。每当由于溢出而需要某个页面时,它应该具有与前一个页面相同的背景图像。
我一直在尝试这样做
@page {
size: US-Letter portrait;
background-image: url("something.jpg");
padding: 3in .5in .75in .5in;
}
Run Code Online (Sandbox Code Playgroud)
但这不适用于任何浏览器。这是根本不可能的事情吗?还是还有更多我还没有发现的技巧?
asp.net-mvc ×4
jquery ×3
css ×2
html ×2
.net ×1
c# ×1
javascript ×1
linq-to-sql ×1
performance ×1
printing ×1
rabbitmq ×1
razor ×1
sql ×1