【问题标题】:Guid into controller from View?从视图引导到控制器?
【发布时间】:2018-07-31 10:37:55
【问题描述】:

这段代码:

       public async Task<JsonResult> GetLatLong(int? id)
        {
            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }
            //Guid idGuid;
            //Guid.TryParse(id, out idGuid);
            var flightData = await _context.FlightData.SingleOrDefaultAsync(m => m.ID == id);
            var returnedData = new
            {
                id,
                latitude = flightData.Latitude,
                longitude = flightData.Longitude
            };
            return Json(returnedData);
        }

如果我将int 用于id 数据类型,则从视图中可以正常工作。我尝试更改Guid

       public async Task<JsonResult> GetLatLong(Guid? id)
        {
            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }
            //Guid idGuid;
            //Guid.TryParse(id, out idGuid);
            var flightData = await _context.FlightData.SingleOrDefaultAsync(m => m.ID == id);
            var returnedData = new
            {
                id,
                latitude = flightData.Latitude,
                longitude = flightData.Longitude
            };
            return Json(returnedData);
        }

(也是模型)然后它不会被调用。

视图代码是这样的:

    @section mapscripts {
    <section class="scripts">
        <script type="text/javascript">
            $(document).ready(function() {
                Initialize();
            });

            function Initialize() {

                var dataObject = { id: @Html.ViewData.Model.ID};
                //var dataObject = @Html.ViewData.Model.ID;
                var url = '@Url.Action("GetLatLong", "FlightDatas")';
                $.get(url,
                    dataObject,
                    function (response) {

我根本不知道为什么它不起作用。我已经恢复到int 并且很好。就像Guid 不能设置为id
我什至查看了 chrome 中的调试,可以看到 guid 在数据对象中。 java 会对我的 guid 做些什么吗?
迷路了!
谢谢
约翰

【问题讨论】:

  • Guid 是由 .net 创建的唯一标识符。像这样的东西:9de31e20-3fcc-422d-a332-08d5f6cff646 dataObject = { id: @Html.ViewData.Model.ID};成为 dataObject = { id: 9de31e20-3fcc-422d-a332-08d5f6cff646 };
  • dataObject = { id: 9de31e20-3fcc-422d-a332-08d5f6cff646 }; 是有效的 JS 吗?什么会使它使有效?让我们举一个不同的例子。假设我有 var bob = Hello World; - 我该怎么做才能使 那个 有效?

标签: c# asp.net model-view-controller asp.net-core


【解决方案1】:

哇,我显然已经看了太久了。非常感谢 mjwills 的指点。

var dataObject = { id: @Html.ViewData.Model.ID};

改为

var dataObject = { id: "@Html.ViewData.Model.ID"};

和控制器:

    public async Task<JsonResult> GetLatLong(string id)
    {
        if (id == null)
        {
            throw new ArgumentNullException(nameof(id));
        }
        Guid idGuid;
        Guid.TryParse(id, out idGuid);
        var flightData = await _context.FlightData.SingleOrDefaultAsync(m => m.ID == idGuid);

现在一切都很完美

【讨论】:

    猜你喜欢
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    相关资源
    最近更新 更多