增加前台页面,使用单词CRU

[TOC]

我们其实后台是管理,前台就是学习使用的时候应该叫前台。

改修Home控制器,修改home的首页内容

  • 但一开始就发现一个问题,系统不是自带有home控制器,也有home视图,可是F5,HOME是不能显示的。

image.png

  • 这个太郁闷了,这个改Startup.cs 的时候,把路由功能删了,需要增加回来,
  • 完整的Startup.cs 代码。 ``` using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using NewLife.Cube;

namespace dqltest { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews(); // 2020-12-26添加
        services.AddCube();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseCube(env);
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    }
}

}


- 然后会发现bootstrap未能正常引用,主要是他集的才址有变化,
- 于是更改这个模板页内容
- 同时需要增加静态文件的引用  app.UseStaticFiles();
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseCube(env);
        app.UseStaticFiles();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    }
布局页面

<!DOCTYPE html>

@RenderBody()
@RenderSection(“Scripts”, required: false)

- 显示成功前台。
<a name="cvmsq"></a>
### 首页创建bootstrap tab来智能选择学科内容
前台页面代码

@{ ViewData[“Title”] = “Home Page”; }

分类题库

按类型进行练习!

听力练习
短语填空
阅读理解

随课练习

每课小练!

七年级
八年级
九年级
暂定

要点知识

每课小练!

11111
2222
333
4444
    </div>
    <div class="tab-pane fade" id="ios">
        <p>
            1
        </p>
    </div>
    <div class="tab-pane fade" id="jmeter">
        <p>2</p>
    </div>
    <div class="tab-pane fade" id="ejb">
        <p>
            3。
        </p>
    </div>
</div>

- 样式 ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1174002/1626592706774-e14863c2-27d3-4780-9112-b0353d722b7b.png#clientId=u6ab624a9-8f58-4&from=paste&height=689&id=ue8d8da2a&margin=%5Bobject%20Object%5D&name=image.png&originHeight=689&originWidth=479&originalType=binary&ratio=1&size=35661&status=done&style=none&taskId=uf6455343-3ee2-40b2-b436-38b98d9ffea&width=479) <a name="lrPI6"></a> ### 背单词之 - 单词有两种,一种是随及的,这个好理解,一个是按几年级第几节。 - 相来想读表再去重再检索,但这样感觉反而麻烦,实际是我没有找到,哈, - 那么我们新建一个表专门管理章节 - models中新建表
增加一个区域菜单ChapterController,并在后台管理,增加英语的相关年级和单元信息<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1174002/1626593349735-1091b62b-4f7c-4cef-bf7d-ba1087213d2f.png#clientId=u6ab624a9-8f58-4&from=paste&height=274&id=u813a06b2&margin=%5Bobject%20Object%5D&name=image.png&originHeight=274&originWidth=1057&originalType=binary&ratio=1&size=28151&status=done&style=none&taskId=udfdecb06-16bd-4cb6-86f6-b1a19e233c1&width=1057) - 后台控制器中读出年级和单元的所有表,因为是英语,所以皮配了为英语。 - 首先在model可增加一个前台显示的model,名为Chapterview; ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1174002/1626595076046-19d46121-68bc-4f3a-a58b-f5c0d3a92b9f.png#clientId=u4dd908aa-3f4a-4&from=paste&height=131&id=uae8c80be&margin=%5Bobject%20Object%5D&name=image.png&originHeight=131&originWidth=423&originalType=binary&ratio=1&size=8033&status=done&style=none&taskId=u35f55d0e-4135-4b94-8ee0-492c300654c&width=423) - 代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace dqltest.Models { public class Chapterview { public string Grade { get; set; } public string Unit { get; set; } } } 控制器中增加model.copy方法 ,到新的Chapterview模型,然后前台进行forecah public IActionResult EnglishWord1() { var course = Chapter.FindAll(Chapter._.Subject.Contains(“英语”));
var mmm= course.Select(s => { var m = new Chapterview(); m.Copy(s); return m; }).ToList(); return View(mmm); } @model IList

单词随机记

数据库内单词随机抽出进行答背!

点我开始->


按章记录

@foreach(var level1 in Model.GroupBy(x => x.Grade)){

@level1.Key 年级

foreach(var level2 in Model) { if(@level1.Key == level2.Grade) { @level2.Unit 单元 } } }
效果<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1174002/1626601404823-181bb9f4-b56f-4efa-8686-4c972ffaf63e.png#clientId=u9185772c-e9b0-4&from=paste&height=378&id=u8bf98248&margin=%5Bobject%20Object%5D&name=image.png&originHeight=378&originWidth=779&originalType=binary&ratio=1&size=25449&status=done&style=none&taskId=uc739335b-294a-4f0e-9e5c-de2250f42ba&width=779)

<a name="bd5nn"></a>
### 按单元背单词之随及显示

- 这里要一条显示一页,所以要先用到分页和随及功能
- 就是随及抽这一单节的一个单词记录
- 后面我思考了一下,我即然是随及只读一条,为什么还要分页哩,每取一次读一次就OK拉。
- 用的mysql,SQL的写法:

SELECT * FROM englishwords
ORDER BY RAND()
LIMIT 1 ;


- 本来说有XCODE,但实在找不到,于是用SQL吧。
- 石头终于在线给了写法了

FindAll(where, “rand “, null, 0 ,1)


- 于是后台

public IActionResult ByCourseWords(string Grade,string Unit) { ///读出这个单节的所有内容

        if (!String.IsNullOrEmpty(Grade)||String.IsNullOrEmpty(Unit))
        {
            var xxx = EnglishWords.FindAll(EnglishWords._.Grade.Contains(Grade)&EnglishWords._.Unit.Contains(Unit));
            ///直接妆使用sql,随及读出一条信息
            var dal = DAL.Create("Membership");
            var db = dal.Query("select * from EnglishWords ORDER BY RAND() LIMIT 1");
            var list = EnglishWords.LoadData(db);

            return View(list);

        }
        return View();
    }
前台,注意送来的仍然是Ilist<>

@@model IList@ @model IList

努力吧~

@foreach (var item in Model) { }

1 2 3 4
@item.Grade @item.Word @item.Explain @item.Pronunciation 详情


- 显示为一条记录拉

![image.png](https://cdn.nlark.com/yuque/0/2021/png/1174002/1626606238972-690842cd-1659-41e8-88bc-0c9318a07981.png#clientId=u5f51f55a-f284-4&from=paste&height=217&id=udc646e13&margin=%5Bobject%20Object%5D&name=image.png&originHeight=217&originWidth=1199&originalType=binary&ratio=1&size=11357&status=done&style=none&taskId=uc5bf7ce7-ac70-47f9-8685-b88a65ec520&width=1199)
<a name="LrpTp"></a>
### 输入内容进行比较并操作
先进行页面设计,实现答案隐藏。

@@model IList@ @model XCode.Membership.EnglishWords

努力吧~

@@

@@foreach (var item in Model) {@

@Model.Explain

@Model.Pronunciation

</div>
<hr />
<p>
    <a class="btn btn-default btn-sm but" href="#" role="button">解析</a>
    <label class="dqltile1" style="color:#0b8915;"> 共测:</label>  @Model.TestNumbers 次,
    <label class="dqltile1" style="color:#0b8915;"> 错误:</label>  @Model.ErrorNumbers 次。
</p>

<div class="abc" style="display:none">
    <p> <label class="dqltile1" style="color:#0b8915;"> 答案:</label>  @Model.Word  </p>
    <p> <label class="dqltile1" style="color:#0b8915;"> 要点:</label> </p>
    <p>  @Model.MainPoints </p>
    <p> <label class="dqltile1" style="color:#0b8915;"> 例名:</label> </p>
    <p>
        @if (@Model.ExampleSentence != null)
        { string[] arr = @Model.ExampleSentence.Split(';');
            foreach (string s in arr)
            {
            <p>@s.ToString();</p>
        }

        }





        </p>
        <p> <label class="dqltile1" style="color:#0b8915;"> 短语搭配:</label> </p>
        <p>
            @if(@Model.WordsCollocation!=null)
            { string[] arr1 = @Model.WordsCollocation.Split(';');
                foreach (string s in arr1)
                {
                <p>@s.ToString();</p>
            }

            }    </p>

        </div>

<div style="margin-bottom:70px;width:100%;"></div>


<a asp-action="Details" asp-route-id="@Model.ID">详情</a>

@}@

``` - 效果 ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1174002/1626610164299-41629135-eae0-4a3b-b760-fa94d0af27f5.png#clientId=u5f51f55a-f284-4&from=paste&height=539&id=ud903af80&margin=%5Bobject%20Object%5D&name=image.png&originHeight=539&originWidth=427&originalType=binary&ratio=1&size=30025&status=done&style=none&taskId=u61917eb8-3563-4703-9ac3-4de91307314&width=427) - 实现访问一次,随及读出的时候,给该单词增加一个次数1 ``` ///对读出的这条信息返回并增加次数 if (list!=null) { list.TestNumbers += 1; list.Update(); return View(list); } ``` - 实现弹窗口 - [https://www.jq22.com/yanshi22162](https://www.jq22.com/yanshi22162) 使用的是这个,黑好用 - 前台 ``` @*@model IList*@ @model XCode.Membership.EnglishWords

努力吧~

@**@
@*@foreach (var item in Model) {*@

@Model.Explain

@Model.Pronunciation


解析 @Model.TestNumbers 次, @Model.ErrorNumbers 次。

@*}*@
    <!-- 消息弹窗 -->
    <div class="sy-alert sy-alert-alert animated" sy-enter="zoomIn" sy-leave="zoomOut" sy-type="alert" sy-mask="true" id="alert2">
        <div class="sy-title">测验结果</div>
        <div class="sy-content" style="        display: none;
    font-size: 1.5em;
    color: #10b747;
    padding: 10px;

“>非常正确,牛呀!!!

若有收获,就点个赞吧

0 人点赞

展开/收起文章目录