所以判斷是IIS自己踢的
找了一下設定在
IIS > 應用程式集區 > 集區名稱上右鍵 > 進階設定
如圖

固定時間間隔(分鐘):預設是1740改成0就不會回收了
function formatSecond(secs) {
var hr = Math.floor(secs / 3600);
var min = Math.floor((secs - (hr * 3600)) / 60);
var sec = parseInt( secs - (hr * 3600) - (min * 60));
while (min.length < 2) { min = '0' + min; }
while (sec.length < 2) { sec = '0' + sec; }
if (hr) hr += ':';
return hr + min + ':' + sec;
}
參考網址
點我
<elmah>
<security allowRemoteAccess="1" />
</elmah>
3.以下是幾個設定在相關教學裡有保哥說的很詳細
<appSettings>
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="true" />
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.route" value="errorelmah" />
</appSettings>
參考網址//抓最大值 int Sort = (from u in db.TabContent where u.TabID==tabid select u.Sort).DefaultIfEmpty().Max(x => x == null ? 0 : x); ViewBag.Sort = Sort + 1;以上這部份很簡單沒問題吧
<div class="form-group">
@Html.LabelFor(model => model.Sort, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Sort)
@Html.ValidationMessageFor(model => model.Sort)
</div>
</div>
程式碼自動產生會這樣
<div class="form-group">
@Html.LabelFor(model => model.Sort, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBox("Sort",null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Sort)
</div>
</div>
改成用弱型別是一個方法記得"Sort"這樣就能抓到ViewBag了
public ActionResult Index( )
{
ViewBag.TabData = new SelectList(db.Tab, "TabID", "TabName"); //產生下拉選單
return View();
}
View的部份也放一個@Html.DropDownList接收下拉選單
@Html.DropDownList("TabData", null, null, new { id = "ddTabData" })
然後產原本產生的Index裡的Table另外開一個_List.schtml裡
$(function () {
$("#ddTabData").change(function () {
var selectedItem = $("#ddTabData").val();
$.ajax({
cache: false,
type: "GET",
url: "@(Url.Action("GetList", "TabContent", null))",
data: { "tid": selectedItem },
success: function (data) {
$("#Content").html(data);
},
error: function (xhr, ajaxOptions, thrownError) {
alert('讀取資料失敗.');
}
});
});
});
去呼叫@(Url.Action("GetList", "TabContent", null))
public ActionResult GetList(int tid = 1)
{
var tabcontent = db.TabContent.Where(u => u.TabID == tid).Include(t => t.Account).Include(t => t.Account1).Include(t => t.Tab);
return View("_List",tabcontent.ToList() );
}
這樣就會回傳一整個Table回來
@{
if (IsAjax)
{
Layout = null;
}
}
上面這句也要加,不加差在那邊各位可以自己測試!!
public ActionResult Index()
{
Mapper.CreateMap<Account, AccountMV>();
var OrderList = db.Account.OrderBy(o => o.AccountID);//設定OrderBy List
var PagedList = OrderList.ToPagedList(p, 2);//分頁的 List
var viewmodel = Mapper.Map<IEnumerable<Account>, IEnumerable<AccountMV>>(PagedList.ToArray()); // 分頁列表轉換成ViewModel
var query = new StaticPagedList<AccountMV>(viewmodel, PagedList.GetMetaData()); // reconsitute a new IPagedList containing the viewmodels
return View(query);
}
說真的我還真看不太懂最後一行那句
public ActionResult Index()
{
var query = from u in db.Account
select new AccountVM
{
AccountID = u.AccountID,
AccountName = u.AccountName,
IsUsed = u.IsUsed,
LoginIP = u.LoginIP,
LoginDate = u.LoginDate,
Name = u.Name,
Email = u.Email
};
return View(query);
}
看以上程式碼只要加一個欄位每次都要跑來修改
public ActionResult Index()
{
Mapper.CreateMap<Account, AccountVM>();
List<Account> account = db.Account.ToList();
List< AccountVM> query = Mapper.Map< List< Account>,List< AccountVM>>(account);
return View(query);
}
這樣不管怎麼增加欄位都不需要在Controller修改了
@{
List<SelectListItem> list = (List<SelectListItem>)ViewBag.TabColumnName;
foreach (var s in list )
{
if (item.TabColumnName.Equals(s.Value))
{
s.Selected = true;
}
else
{
s.Selected = false;
}
}
}
@Html.DropDownListFor(modelItem => item.TabColumnName, list)
Controller如下
ViewBag.TabColumnName =TabColumnVM.getTabColumnName();