Model层的类:
public class ObjectIdModel
{
public string CreationDateTimeText { get; set; }
public string ObjectIdText { get; set; }
public bool Valid { get; set; }
public int? Machine { get; set; }
public short? Pid { get; set; }
public int? Increment { get; set; }
public int? Timestamp { get; set; }
}
public class EncodeIndexModel //控制器Encode视图Index 名
{
public string Timestamps { get; set; }
public List<string> ObjectIds { get; set; }
public string ObjectIdsText { get; set; }
public EncodeIndexModel()
{
ObjectIds = new List<string>();
}
}
public class HomeIndexModel
{
public HomeIndexModel()
{
ObjectIds = new List<ObjectIdModel>();
}
public List<ObjectIdModel> ObjectIds { get; set; }
public string ObjectIdText { get; set; }
}
控制器层:
public class EncodeController : Controller
{
//http://localhost:20782/Encode?timeStamps=2016-07-20T07:34:47,2016-07-20T07:34:47
public ActionResult Index(string timestamps)
{
var encodeIndexModel = new EncodeIndexModel();
if (string.IsNullOrWhiteSpace(timestamps))
{
return View(encodeIndexModel);
}
var timestampList = timestamps
.Split(',')
.Where(s => !String.IsNullOrWhiteSpace(s));
encodeIndexModel.Timestamps = string.Join("\n", timestampList.ToArray());
var lines = new List<string>();
foreach (var timestampText in timestampList)
{
lines.Add(TimeStampToObjectId(timestampText));
}
encodeIndexModel.ObjectIds = lines;
encodeIndexModel.ObjectIdsText = String.Join(Environment.NewLine, lines);
return View(encodeIndexModel);
}
//时间戳转换成ObjectId
private string TimeStampToObjectId(string timestampText)
{
DateTime dateTime;
if (DateTime.TryParse(timestampText, out dateTime))
{
return new ObjectId(dateTime, 0, 0, 0).ToString();
}
return "无效的日期时间: " + timestampText;
}
}
public class HomeController : Controller
{
public ActionResult Index(string objectIds)
{
var homeIndexModel = new HomeIndexModel();
if (string.IsNullOrWhiteSpace(objectIds))
{
return View(homeIndexModel);
}
var objectIdsList = objectIds
.Split(',')
.Where(s => !String.IsNullOrWhiteSpace(s));
homeIndexModel.ObjectIdText = string.Join("\n", objectIdsList);
var lines = new List<ObjectIdModel>();
foreach (var objectIdText in objectIdsList)
{
lines.Add(ObjectIdToFormattedText(objectIdText));
}
homeIndexModel.ObjectIds = lines;
return View(homeIndexModel);
}
//ObjectId转成格式化文本
private ObjectIdModel ObjectIdToFormattedText(string objectIdText)
{
var objectIdModel = new ObjectIdModel
{
ObjectIdText = objectIdText
};
try
{
var objectId = new ObjectId(objectIdText);
objectIdModel.CreationDateTimeText = objectId
.CreationTime
.ToString("o");
objectIdModel.Machine = objectId.Machine;
objectIdModel.Pid = objectId.Pid;
objectIdModel.Increment = objectId.Increment;
objectIdModel.Timestamp = objectId.Timestamp;
objectIdModel.Valid = true;
}
catch (Exception)
{
objectIdModel.Valid = false;
}
return objectIdModel;
}
}
View层:
Encode->Index.cshtml内容:
@model MongoDbHelper.Models.EncodeIndexModel
@{
ViewBag.Title = "MongoDB助手";
}
<div class="container-fluid">
<div class="row-fluid">
<div class="span10">
<p>ISO时间戳转换成ObjectID</p>
<textarea style="width: 500px" rows="10" id="objectIds" placeholder="yyyy-mm-ddThh:mm:ss">@Model.Timestamps</textarea>
</div>
</div>
<div class="row-fluid">
<div class="span6">
<p><input id="parse" class="btn btn-primary" type="button" value="Encode" /></p>
</div>
</div>
<div class="row-fluid">
<div class="span6">
@if (Model.ObjectIds.Any())
{
<textarea style="width: 500px" rows="10" id="" style="font-family: 'Courier New'">@Model.ObjectIdsText</textarea>
}
</div>
</div>
</div>
@section scripts
{
<script type="text/javascript">
var baseUrl = "@Url.Action("Index")";
$(document).ready(function() {
$('#parse').click(parseClick);
});
function parseClick() {
var objectIdsText = $('#objectIds').val();
var lines = objectIdsText.split('\n');
var newUrl = baseUrl + "?timeStamps=" + lines.join();
window.location = newUrl;
}
</script>
}
Home->Index.cshtml内容如下@model MongoDbHelper.Models.HomeIndexModel
@{
ViewBag.Title = "MongoDB助手";
}
<div class="container-flui">
<div class="row-fluid">
<table class="table table-hover table-striped table-condensed">
<thead>
<tr>
<th>
ObjectId
</th>
<th>
Creation timestamp
</th>
<th>
UNIX时间戳(Timestamp)
</th>
<th>
主机名的散列值(Machine)
</th>
<th>
进程标识符(Pid)
</th>
<th>
随机计数值(Increment)
</th>
</tr>
</thead>
<tbody>
@foreach (var line in Model.ObjectIds)
{
var classText = line.Valid ? "" : "error";
<tr class="@classText">
<td>
@line.ObjectIdText
</td>
<td>
@line.CreationDateTimeText
</td>
<td>
@line.Timestamp
</td>
<td>
@line.Machine
</td>
<td>
@line.Pid
</td>
<td>
@line.Increment
</td>
</tr>
}
</tbody>
</table>
</div>
<div class="row-fluid">
<p>这里粘贴ObjectID的列表,每行一个:</p>
<ul class="unstyled">
<li>
<textarea cols="26" rows="10" id="objectIds">@Model.ObjectIdText</textarea>
</li>
<li>
<input id="parse" class="btn btn-primary" type="button" value="Parse" />
</li>
</ul>
</div>
</div>
@section scripts
{
<script type="text/javascript">
var baseUrl = "@Url.Action("Index")";
$(document).ready(function() {
$('#parse').click(parseClick);
});
function parseClick() {
var objectIdsText = $('#objectIds').val();
var lines = objectIdsText.split('\n');
var newUrl = baseUrl + "?objectIds=" + lines.join();
window.location = newUrl;
}
</script>
}
结果如图: