Попытка отобразить данные поста на странице отображения с использованием таблиц данных и JavaScript - PullRequest
0 голосов
/ 26 марта 2019

, так что в настоящее время я работаю над форумоподобным проектом, в рамках которого пользователи могут отправлять сообщения в базу данных, а затем отображать заголовок сообщения в таблице данных. Гиперссылка заголовка перенаправит пользователя на страницу postDisplay, основанную на postId, который передается через URL.

Проект представляет собой веб-форму asp.net, которая использует Entity Framework.

Следующий код - класс Post.cs

 public class Post
    {
        //The post ID
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int postId { get; set; }
        // Foreign key to customer
        public string Id { get; set; }
        public string postTitle { get; set; }
        public string postBody { get; set; }
        public string postDepartment { get; set; }
        public string postCategory { get; set; }
        public bool postAnonymous { get; set; }
        public int postLikes { get; set; }
        public int postDislikes { get; set; }
        public DateTime postDate { get; set; } 
    }

Приведенный ниже код отвечает за отправку сообщения в db

protected void AddPost(object sender, EventArgs e)
        {
            ApplicationUserManager _userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
            ApplicationUser user = _userManager.FindByName<ApplicationUser, string>(HttpContext.Current.User.Identity.Name);


            var department = "";
            using (var _dbContext = new ApplicationDbContext())
            {
                department = _dbContext.Departments.FirstOrDefault(c => c.deptId == user.deptId).deptName;
            }


            Post newPost = new Post()
            {
                postTitle = inputTitle.Text,
                postBody = inputBody.Text,
                postCategory = inputCategory.SelectedValue,
                postAnonymous = Convert.ToBoolean(Int32.Parse(inputAnonymous.SelectedValue)),
                Id = user.Id,
                postDepartment = department,
                postDate = DateTime.Now,
            };

            using (var _dbContext = new ApplicationDbContext())
            {
                _dbContext.Posts.Add(newPost);
                _dbContext.SaveChanges();
            }

            //Display success message and clear the form.
            string message = "Your suggestion has been submitted successfully!";
            string script = "window.onload = function(){ alert('";
            script += message;
            script += "');";
            script += "window.location = '";
            script += Request.Url.AbsoluteUri;
            script += "'; }";
            ClientScript.RegisterStartupScript(this.GetType(), "SuccessMessage", script, true);
        }

Приведенный ниже код отвечает за создание DataTable, которое просматривает заголовки поста, а гиперссылка postId на страницу postDisplay

<div  class="jumbotron">

    <table class="display" id="postsTable">
        <thead>
            <tr>
                <th>Title</th>
                <th>Category</th>
                <th>Date</th>

            </tr>
        </thead>
        <tbody>

        </tbody>
    </table>
  <br />

</div>
 <asp:HiddenField id="deptName" runat="server"/>
 <script type="text/javascript">



     $(document).ready(function () {

        $('#postsTable') .DataTable({
            pageLength: "5",
            ajax: {
                url: "/api/posts/GetDatatables",
                type: "GET",

                dataType: "json",
                dataSrc: ""
            },
            columns: [
                {
                    render: function (data, type, row, meta) {

                        return '<a href="/PostDisplay/LoadPost?postId="' + row.postId + '">' + row.postTitle+'</a>';

                    }
                },
                {data: "postCategory"},
                {data: "postDate"},

            ]
        });
    });
</script>

Теперь для последней части, где ошибка, похоже, спотыкается, страница postDisplay начинается с

protected void Page_Load(object sender, EventArgs e)
        {

            int postId = int.Parse(Request.QueryString["postId"]);


        }

Согласно отладчику, postId запрашивается правильно и анализируется в int, но когда значение затем отображается как int postId, оно фактически не несет число с ним в URL?

<------------------------- EDIT -------------------- ------>

Следующая строка отображается из строки кода выше

"Input string was not in a correct format."

Будем благодарны за любые предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...